我的代码很简单:
long long GetAmountFromString(NSString* string){
NSLog(@"double value %f", [string doubleValue]);
NSLog(@"double value * 100 %f", [string doubleValue]*100);
NSLog(@"long long %lld", (long long)([string doubleValue]*100));
return (long long)([string doubleValue]*100);
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
GetAmountFromString(@"4324.69");
}
return 0;
}
但是,它的输出很奇怪:
double value 4324.690000
double value * 100 432469.000000
long long 432468
我期望的是342469。谁能告诉我完成这项工作的正确方法?
通常,十进制值不能用浮点类型精确表示。因此,双精度值* 100实际上小于432469。将其四舍五入即可得到您期望的结果。
double round(double number)
{
return number < 0.0 ? ceil(number - 0.5) : floor(number + 0.5);
}
NSLog(@"long long %lld", (long long)(round([string doubleValue]*100)));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句