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

Ios 在Objective-C中四舍五入之前如何保持浮点值?,ios,cocoa-touch,floating-point,nsstring,rounding,Ios,Cocoa Touch,Floating Point,Nsstring,Rounding,我有一些NSString相等的@“1234567.89”。我必须从这个字符串中生成floatValue。当我调用[myString floatValue]时,这个float等于1234567.875000。在这之前如何保持?我希望floatValue等于1234567.89000 谢谢您的帮助。问题在于,浮点数不能以您想要的精度表示那么大的数字。请尝试改用double,并使用[myString doubleValue]检索它。下面的小示例程序演示了这一点: #import <Foundat

我有一些
NSString
相等的
@“1234567.89”
。我必须从这个字符串中生成
floatValue
。当我调用
[myString floatValue]
时,这个
float
等于
1234567.875000
。在这之前如何保持?我希望floatValue等于
1234567.89000


谢谢您的帮助。

问题在于,浮点数不能以您想要的精度表示那么大的数字。请尝试改用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);
    }
}
#导入
int main(int argc,char*argv[]){
@自动释放池{
NSString*myString=@“1234567.89”;
float floatVal=[myString floatValue];
double doubleVal=[myString doubleValue];
NSLog(@“字符串:%@float:%f双精度:%f”、myString、floatVal、doubleVal);
}
}
字符串:1234567.89浮动:1234567.875000双精度:1234567.890000


问题是一个浮点数不能以你想要的精度来表示这么大的数字。请尝试改用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);
    }
}
#导入
int main(int argc,char*argv[]){
@自动释放池{
NSString*myString=@“1234567.89”;
float floatVal=[myString floatValue];
double doubleVal=[myString doubleValue];
NSLog(@“字符串:%@float:%f双精度:%f”、myString、floatVal、doubleVal);
}
}
字符串:1234567.89浮动:1234567.875000双精度:1234567.890000