我在类文件中有一个函数方法。 像这样:
-(NSArray*)getPayMoney:(NSUInteger)money month:(NSInteger)month rates:(float)rates;
当我从此传输速率值0.06时,在调试模式下获取速率为0.059999。 有谁知道原因?
答案 0 :(得分:0)
这是计算机科学的基础 - 浮点表示根本无法准确表示所有十进制数。请做一些阅读:
底线:如果您使用的是货币值,请不使用浮点类型。您将遇到两个主要问题:首先,您无法始终准确地将货币值转换为浮点数和返回值,其次,您可能会出现舍入错误,从而在某些计算中产生错误结果。
你必须使用BCD或十进制类型来计算货币。 Apple在Cocoa中为此提供了直接支持:
答案 1 :(得分:-1)
Float变量在编程世界中并不总是宝贵的。 你应该使用双变量作为宝贵的价值。