关于函数方法之间的float参数传递

时间:2013-10-30 09:09:30

标签: iphone

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

必须使用BCD或十进制类型来计算货币。 Apple在Cocoa中为此提供了直接支持:

答案 1 :(得分:-1)

Float变量在编程世界中并不总是宝贵的。 你应该使用双变量作为宝贵的价值。