在C ++中,有一个std :: setprecision函数可以设置float / double精度。 如何在Objective-C中设置精度?并在下面打印:
(lldb) p 10/200
(int) $0 = 0
(lldb) p (float)10/200
(float) $1 = 0.0500000007
第3行结果是0.0500000007,为什么结果为'7'?我怎样才能得到0.05的结果?
答案 0 :(得分:2)
浮点数是二进制浮点数。 0.05不能用二进制浮点数精确表示。结果不可能完全是0.05。
另外,你使用float而不是double是毫无意义的。 float只有六位或七位精度。除非你有充分的理由可以解释,否则使用double,它可以提供大约15位数的精度。你仍然无法准确地得到0.05,但错误会少得多。
答案 1 :(得分:0)
您可以使用NSNumberFormatter以各种方式格式化对象 - 这里列出的数量太多,请参阅Xcode提供的文档。另请参阅数据格式指南。
答案 2 :(得分:0)
您必须在%
modulo
运算符与其identifier
f
之间进行更改才能获得所需的结果。
NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", myFloat];
%。02f告诉格式化程序你将格式化一个浮点数(%f),并且应该舍入到两个位置,并且应该用0填充。
示例:
%f = 25.000000 // results 25.000000
%.f = 25 // results 25
%.02f = 25.00 // results 25.00
答案 3 :(得分:-1)
使用
double A = 0.0500000007;
NSString *b =[NSString stringWithFormat:@"$%.02f",A] ;
double B = [b doubleValue];