如何在小数点后修剪零

ram*_*ram 7 cocoa objective-c

我试图在小数点后修剪零如下,但它没有给出所需的结果.

trig = [currentVal doubleValue];
trig = trig/100;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:0];
display.text = [formatter stringFromNumber:[NSNumber numberWithDouble:trig]];
Run Code Online (Sandbox Code Playgroud)

在小数点后没有修剪零的情况下仍然显示该数字.

currentVal是我要输入的号码.

例如,如果我传递"trig"= 123(在执行trig/100之后最初"trig"= 123我想显示1.23但它显示为1.23000000).

Mon*_*olo 30

有时,直接C格式说明符比Cocoa格式化程序类更容易,并且它们可以在普通stringWithFormat:消息的格式字符串中使用NSString.

如果您的要求是不显示任何尾随零,则"g"格式说明符执行以下操作:

float y = 1234.56789f;

NSString *s = [NSString stringWithFormat:@"%g", y];
Run Code Online (Sandbox Code Playgroud)

请注意,没有精度信息,这意味着printf库将删除尾随的零.

文档中有更多信息,涉及IEEE的文档.

  • 谢谢,但如果在这种情况下g = 123.2314100000,我想将g显示为123.23141 (3认同)

Jer*_*myP 2

文档来看,它看起来setFractionDigits:只能用于转换其他方式。

最好的办法可能是在格式化之前将您的数字转换为整数,例如

 double converted = round(trig); // man round for docs
Run Code Online (Sandbox Code Playgroud)

stringWithFormat:您还可以使用的格式化功能NSString,但是这样您将失去所有的本地化优势NSNumberFormatter