请考虑以下代码:
0.1 + 0.2 == 0.3 -> false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2 -> 0.30000000000000004
Run Code Online (Sandbox Code Playgroud)
为什么会出现这些不准确之处?
在对这个问题的跟进中,似乎有些数字根本不能用浮点表示,而是近似的.
如何存储浮点数?
是否有不同尺寸的通用标准?
如果我使用浮点,我需要注意什么样的问题?
它们是否是跨语言兼容的(即,我需要处理哪些转换才能通过TCP/IP将python程序中的浮点数发送到C程序)?
-亚当
我有一个小问题,我找不到解决方案!
我的代码是(这只是一个示例代码,但我的原始代码执行类似的操作):
float x = [@"2.45" floatValue];
for(int i=0; i<100; i++)
x += 0.22;
NSLog(@"%f", x);
Run Code Online (Sandbox Code Playgroud)
输出是52.450001而不是52.450000!
我不知道因为这种情况发生了!
谢谢你的帮助!
〜〜解决
谢谢大家!是的,我用双重型解决了!
可能重复:
Javascript 数学错误:不精确的浮点数
我有以下代码来制作动画(doIt 制作动画但不相关)。
function recur(max, i){
console.log("i: " + i);
if ( i <= 1){
setTimeout(function(){
// doIt(max,i);
recur(max, i + 0.1);
},100);
} else {
// OK
}
}
recur(16,0);
Run Code Online (Sandbox Code Playgroud)
但是,i 值不一致。对于以下代码,输出为(Google Chrome 20):
i: 0
i: 0.1
i: 0.2
i: 0.30000000000000004
i: 0.4
i: 0.5
i: 0.6
i: 0.7
i: 0.7999999999999999
i: 0.8999999999999999
i: 0.9999999999999999
i: 1.0999999999999999
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我想要 0.3 不是一个如此接近的数字。不幸的是,这在每次迭代中都会发生。