gpt4 book ai didi

rust - 为什么 Rust 创建的 f32 小于 f32::MIN_POSITIVE?

转载 作者:行者123 更新时间:2023-12-03 07:51:33 24 4
gpt4 key购买 nike

这段代码:

        let a = 1.00000003E-27f32;
let b = 3.19291373E+17f32;
println!("{:e} < {:e}", a/b, std::f32::MIN_POSITIVE);

产生这个结果:

3e-45 < 1.1754944e-38

首先,我期望零,因为 MIN_POSITIVE 是最小正常正数。然后我读到了 subnormal numbers 。那么 Rust 打印这个结果是否是因为它是一个次正规数?但是,为什么它不显示为次正规数呢?

最佳答案

Why does rust create an f32 smaller then f32::MIN_POSITIVE?

因为MIN_POSITIVE是一个坏名字。它不是最小正可表示数,而是最小正可表示正规数。有小于它的正可表示值,称为次正规数。

So does rust print that result because it is a subnormal number ?

a/b计算结果为2.802596928649634141847459166579832262560523883753031543514136567777958216537172120297327637672424316•10< sup>−45。 Rust 打印 3e-45 因为这是格式化 2.80259692864963414184745916657983226256052388375303154351413656777958216537172120297327637672424316 的结果•10−45 使用 :e 表示 f32 类型。

But then, why is it not displayed as a subnormal number ?

次正规数没有特殊格式。它们是数字并且格式类似于数字。 (使用的位数可能会受到次正规数的粗糙度的影响。也就是说,由于次正规数的相对间距较小,因此可能需要更少的位数来区分次正规数与其数字。)

关于rust - 为什么 Rust 创建的 f32 小于 f32::MIN_POSITIVE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76944892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com