将浮点文字映射为其二进制表示形式的过程

问题描述 投票:1回答:1

考虑精确的浮点值在0.3附近

1) 0.2999999523162841796875
2) 0.2999999821186065673828125
3) 0.300000011920928955078125
4) 0.3000000417232513427734375
5) 0.30000007152557373046875

当我们用C ++编写以下代码时

auto x = 0.30f

编译器必须解析0.30f令牌,并使float类型的x的值为0.300000011920928955078125。 (以上选项3)

我很好奇编译器如何达到该值,而不是其周围的值。一种理论是,他们调用strtof函数来获取浮点数。 Here是strtof的实现(基本上是通过字符串的每个字符,乘以10的幂,然后找出小数的位置)。对我来说,这种方法为什么会给出选项3而不是选项4或5并不为人所知。

请考虑精确的浮点值0.3左右)0.2999999523162841796875 2)0.2999999821186065673828125 3)0.300000011920928955078125 4)0.3000000417232513427734375 5)0.30000007152557373046875当...

c++ floating-point ieee-754
1个回答
0
投票

一种理论是,他们调用strtof函数来获取浮点数。

© www.soinside.com 2019 - 2024. All rights reserved.