クラスファイルに関数メソッドがあります。このような:
-(NSArray*)getPayMoney:(NSUInteger)money month:(NSInteger)month rates:(float)rates;
これからレート値 0.06 を転送すると、デバッグ モードでのレートは 0.059999 になります。誰も理由を知っていますか?
クラスファイルに関数メソッドがあります。このような:
-(NSArray*)getPayMoney:(NSUInteger)money month:(NSInteger)month rates:(float)rates;
これからレート値 0.06 を転送すると、デバッグ モードでのレートは 0.059999 になります。誰も理由を知っていますか?
これは基本的なコンピューター サイエンスです。浮動小数点表現では、すべての 10 進数を正確に表すことはできません。読んでください:
結論: 通貨値を扱う場合は、浮動小数点型を使用しないでください。2 つの大きな問題があります。1 つ目は、通貨値を常に正確に浮動小数点に変換したり戻したりできるとは限らないことです。2 つ目は、特定の計算で誤った結果をもたらす丸め誤差が発生する可能性があることです。
通貨で計算するには、BCD または小数タイプを使用する必要があります。Apple は Cocoa でこれを直接サポートしています。