-1

我已经阅读了很多关于此的帖子,但所有帖子都是为了限制数字来显示它们(NSString)。就我而言,我有:

我比较了两个双精度值(它们是“相同的”),它们中的每一个都来自不同的数学运算。例如:(4.800000 和 4.800000)

双倍结果1=4.800000,结果2=4.800000

//比较结果:

if(result1==result2){
    msg.text=@"well done!!";        
}else if(result1>result2){
    msg.text=@"continue your work";    
}

“我在用钱工作 (4,80€)”

在味精标签中,我收到“继续你的工作”消息,而不是“做得好”。我什至不知道比较是否以正确的方式进行。

我认为最好的办法是将 4.800000 限制为 4.80,以便删除小值并进行精确比较。(我怎么能这样做?)我不想将数字限制为两位数只是为了打印解决方案,我想用那个号码工作。

4

3 回答 3

0

你可以这样做:

double a = 2.55000, b = 2.55002;
if(fabs(a-b)<1e-3) {
    // code here, a == b
} else {
   // code here, a != b
}
于 2013-02-01T16:56:01.057 回答
0

使用floor(<#double#>)四舍五入或只是减去它们并降低结果。

于 2013-02-01T16:56:09.220 回答
0

有关此问题的一个很好的答案,请参见:
https ://stackoverflow.com/a/10335601/474896

可以简单概括为:

if (fabs(x-y) < FLT_EPSILON) {/* ... */}

但是,由于您使用的是金钱价值,因此您应该检查一下NSDecimalNumber

或者正如 Marcus Zarra 所说:

“如果你正在处理货币,那么你应该使用 NSDecimalNumber。” .

于 2013-02-01T17:02:08.277 回答