-1

私はこれについて多くの投稿を読みましたが、それらはすべて表示する桁数を制限することでした(NSString) .私の場合:

2 つの double 値 (「同じ」) を比較します。それぞれが異なる数学演算から取得されます。例: (4.800000 および 4.800000)

double 結果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

この問題に対する適切な回答については、
https ://stackoverflow.com/a/10335601/474896 を参照してください。

これは、次のように簡単に要約できます。

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

ただし、お金の値を扱っているので、チェックアウトする必要がありますNSDecimalNumber

または、マーカス・ザラが言うように:

「通貨を扱う場合は、NSDecimalNumber を使用する必要があります。」.

于 2013-02-01T17:02:08.277 に答える
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 に答える