我在和MSDN中读过很多次,float (或double)没有真实世界整数或十进制值的精确表示。正确!这在获得等式检查出错或断言简单的加法或减法测试时是可见的。也有人说浮点数没有像0.1这样的十进制值的精确表示,但是如果我们在像float a = 0.1f;这样的visual中声明一个浮点数,那么它们在调试时如何显示精确的0.1呢?它应该显示出类似于0.09999999..
使用以下(几乎最小)的示例:for x in np.arange(0,2,0.1):我们得到:0.10.30000000000000004我知道“浮点数精度问题”是X.X000001输出的罪魁祸首,但我不明白的是,它为什么有时会起作用。很明显,0.3不能在基2中精确地用浮点数表示,而且我看不到数字中没有用一个十进制数字显示的任何模式。是什么魔法让它截断剩余的数字?为