在小数点后显示不必要的零的双精度数

时间:2013-06-08 04:35:19

标签: objective-c++

在我的计算器应用程序中,我试图在UILabel中显示“double”值。但是,该值始终具有比所需更多的零。例如,64显示为64.000000,4.23显示为4.230000等

如何才能使其仅显示为适合的小数位数?

vector<Token> postfix;  // create empty postfix vector
infixToPostfix(infix, postfix);  // call inToPost to fill up postfix vector from infix vector
answer = postFixEvaluate(postfix); // evaluate expression

expString.clear();
expNSString = [NSString stringWithFormat:@"%f", answer]; // convert "answer" to NSString
displayScreen.text = expNSString; // display answer in UIlabel "displayScreen"

2 个答案:

答案 0 :(得分:0)

[NSString stringWithFormat:]类引用中所述:

<强>参数

  

格式化格式字符串。请参阅“Formatting String Objects”   如何使用此方法的示例,以及“String Format Specifiers”   格式说明符列表。该值不得为零。

并且在第一个链接之后,第一个示例之一是:

NSString *string1 = [NSString stringWithFormat:@"A string: %@, a float: %1.2f",
                                               @"string", 31415.9265]; //  ^
// string1 is "A string: string, a float: 31415.93"

你需要学会自己思考。阅读文档!

答案 1 :(得分:0)

这个问题有点老了,但你试过%g吗?在某些情况下,这将产生科学记数法:

  

64位浮点数(double),如果指数小于-4或大于或等于精度,则以%e的样式打印,否则为%f的样式。

但是,正如它所说,你可以使用精度字段在某种程度上控制它:如果你的数字很大,你需要提高精度以避免科学记数法。如果你的数字很小,那么我认为在使用%g时你无能为力。

我得到了这个输出:

    64.0 -> "64"
    64.1 -> "64.1"
    64.15555 -> "64.1556" // default precision is 6