>>> float(str(0.65000000000000002))
0.65000000000000002
>>> float(str(0.47000000000000003))
0.46999999999999997 ???
这里发生了什么?如何转换0.47000000000000003
为字符串并将结果值转换为浮点数?
我在Windows上使用Python 2.5.4。
str(0.47000000000000003)
给予'0.47'
并且float('0.47')
可以0.46999999999999997
。这是由于表示浮点数的方式(请参阅此Wikipedia文章)
注意:float(repr(0.47000000000000003))
或eval(repr(0.47000000000000003))
会给您预期的结果,但如果需要精度,则应使用Decimal。
问题内容: 执行以下代码时: 显示以下输出: 1.0000001 但是输出应该是 1.0000000 ,对吧?如我错了请纠正我..!! 问题答案: 对于IEEE 754标准,0.1并不是真正的“ 0.1”。 0.1编码为:(带有浮点数) 0是符号(=正) 01111011指数(= 123-> 123-127 = -4 (127是IEEE 754中的 偏差 )) 100110011001100110
我编写了一个程序来演示Go中的浮点错误: 它打印: 这与用C编写的相同程序的行为相匹配(使用双代码类型) 但是,如果改用,程序就会陷入无限循环!如果将C程序修改为使用而不是,它将打印 为什么在使用时,Go程序的输出与C程序的输出不一样?
问题内容: 我已经将其输入python shell: 我期望0.1 * 0.1不是0.01,因为我知道以10为底的0.1是周期性的,以2为底。 我已经看过20个以上的字符,因此我希望能得到20个。为什么我得到4? 好吧,这解释了为什么我给了我4,但为什么回归? 为什么不回合?(我已经阅读了这个答案,但是我想知道他们如何决定何时对浮点数进行取整,以及何时对不进行浮点取整) 因此,浮子的准确性似乎是一
在C中比较相同的浮点值 比较float和float literal的奇怪输出 我读了上面关于浮点的链接,但甚至得到奇怪的输出。 现在按照推广规则,“其他如果”难道不是必须印出来的吗? 但是,这里是打印“if”
3.2. 浮点数 Go语言提供了两种精度的浮点数,float32和float64。它们的算术规范由IEEE754浮点数国际标准定义,该浮点数规范被所有现代的CPU支持。 这些浮点数类型的取值范围可以从很微小到很巨大。浮点数的范围极限值可以在math包找到。常量math.MaxFloat32表示float32能表示的最大数值,大约是 3.4e38;对应的math.MaxFloat64常量大约是1.8
考虑以下代码: 不管我怎么看,这种下溢似乎都没有意义。正如维基百科所说, 下溢是计算机程序中的一种情况,其中计算结果的绝对值比计算机实际存储在CPU内存中的数值小。 但很明显,计算机能够存储与所讨论的值大致接近的数字,因此定义似乎与我在这里看到的行为完全不一致。 有人能解释一下为什么其中一些会产生下溢而另一些不会吗? 这是正确的行为还是错误?