在我的课程中,我被告知:
连续值大约在内存中表示,因此使用浮点数计算涉及舍入误差.这些是位模式的微小差异; 因此,
e==f如果是漂浮物e,f则测试是不安全的.
参考Java.
这是真的?我使用了doubles和floats的比较语句,并且从未遇到过舍入问题.从来没有我在课本上读过类似的东西.当然虚拟机占了这个?
我想我会疯了."反击"和"间隔"都是双打.这发生在加速度计上:didAccelerate,间隔为(.01)."计数器"最终应增加到"间隔".由于某种原因,我不能得到这个"如果"响.
我忽略了什么吗?
double interval = .5;
if( counter == interval ){ //should eventually be .50000 == .50000
NSLog( @"Hit!" );
[self playSound];
counter = 0;
}else{
counter += .01;
}
NSLog( @"%f, %f, %d",counter,interval,(counter == interval) );
Run Code Online (Sandbox Code Playgroud) 我有一个小问题,我找不到解决方案!
我的代码是(这只是一个示例代码,但我的原始代码执行类似的操作):
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!
我不知道因为这种情况发生了!
谢谢你的帮助!
〜〜解决
谢谢大家!是的,我用双重型解决了!