2

我在类文件中有一个函数方法。像这样:

-(NSArray*)getPayMoney:(NSUInteger)money month:(NSInteger)month rates:(float)rates;

当我从中传输速率值 0.06 时,在调试模式下获取速率为 0.059999。有谁知道原因?

4

1 回答 1

0

这是计算机科学的基础——浮点表示根本无法准确地表示所有十进制数。请阅读:

底线:如果您使用货币值,请不要使用浮点类型。您将遇到两个主要问题:首先,您不能始终准确地将货币值转换为浮点数并返回,其次,您可能会出现舍入错误,从而在某些计算中给出不正确的结果。

必须使用 BCD 或小数类型来计算货币。Apple 在 Cocoa 中对此提供了直接支持:

于 2013-10-30T10:36:18.090 回答