-4

いくつかの理由で、Double Value の Integer 部分と Fraction 部分を 2 つの別個の整数として必要としています。

例: 整数 12 と 34 に分割された値 12.34。

私の数学の基本的な知識によると、これは私が現在使用している次の式を介して簡単に実行できます。

double aValue = 2.4f;
int aInt = (int)aValue;    
int aFract = (int)((aValue - aInt) * 100.0f ); 

これまでのところ動作しますが、奇妙な出力動作があります。

たとえば、2.30000 を渡すと、'2' と '30' ではなく '2' と '29' になります。

aInt と aFract を Double として宣言すると、処理は正しく '2.0000' と '30.0000' になりますが、'30.0000' を整数に変換すると、"興味深いことに" 再び '29' になります。

4

2 に答える 2

1

一部 (100 未満の小さな数値) を変換する場合で、ループ内にない場合は、文字列に変換する方が正確であり、不正確になることはありません。

それはこのようなものでしょう

double aValue = 2.3;
NSString *str = [NSString stringWithFormat:@"%f", aValue];
NSArray *arr = [str componentsSeparatedByString:@"."];

現在 arr には 2 と 3 が含まれていることを覚えておいてください。優れたプログラマーは怠惰なプログラマーです。

于 2012-06-03T20:25:16.680 に答える
-2

数値の表現に不正確さがあります。切り捨てる前に 0.125 程度を追加します。

于 2012-06-03T20:20:35.073 に答える