繁体   English   中英

Objective-C中的Round双打

[英]Round doubles in Objective-C

我的格式为34.123456789 如何将其更改为34.123?

我只想要小数点后的3位数。

您可以使用[NSString stringWithFormat:@"%.3f",d]将其打印到3位小数。

您可以用round(d*1000)/1000近似圆形,但当然不能保证精确,因为1000不是2的幂。

您可以使用:

#include <math.h>
:
dbl = round (dbl * 1000.0) / 1000.0;

请记住,浮点数和双精度数与底层类型可以提供的近似值相近。 这可能不准确。

批准的解决方案有一个小错字。 它缺少“%”。

这是没有拼写错误和一些额外代码的解决方案。

double d = 1.23456;
NSString* myString = [NSString stringWithFormat:@"%.3f",d];

myString将是“1.234”。

如果你想做

34.123456789 -> 34.123
34.000000000 -> 34 not 34.000

您可以使用NSNumberFormatter

NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setMaximumFractionDigits:3]; // 3 is the number of digits

NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:34.123456789]]);  // print 34.123
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:34.000000000]]);  // print 34

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM