如何在Objective-C中舍入之前保持浮点值?

Tom*_*ulc 0 floating-point cocoa-touch rounding nsstring ios

我有一些NSString平等的@"1234567.89".我必须floatValue从这个字符串.当我打电话时,[myString floatValue]float是平等的1234567.875000.如何保持这个?我希望floatValue相等1234567.89000.

谢谢你的帮助.

And*_*sen 5

问题是浮点数不能代表一个大的数字,具有您正在寻找的精度.尝试使用double,然后使用它来检索它[myString doubleValue].下面的小示例程序演示了这一点:

#import <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
    @autoreleasepool {
        NSString *myString = @"1234567.89";
        float floatVal = [myString floatValue];
        double doubleVal = [myString doubleValue];
        NSLog(@"String: %@ float: %f double: %f", myString, floatVal, doubleVal);
    }
}
Run Code Online (Sandbox Code Playgroud)

字符串:1234567.89 float:1234567.875000 double:1234567.890000