我该如何在Objective-C中进行十进制格式化?

3

我对 iPhone 开发场景还比较陌生。我正在练习,试图创建一个基本的计算器,可以进行简单的数字相加,但我想支持小数点。

这是我的代码:

    - (IBAction) calculate
{
    double number1 = ([textField.text doubleValue]);
    double answer = number1+([textField2.text doubleValue]);
    label.text = [[NSString alloc] initWithFormat:@"%2.f", answer];

}

- (IBAction) clear
{
        textField.text = @"";
        textField2.text = @"";
        label.text = @"";

}

非常感谢您的帮助。


@Seva 如何支持小数位。 - user142019
为避免内存泄漏,您需要执行以下操作:label.text = [NSString stringWithFormat:@"%2.f", answer];。只是想指出一下。 :) - donkim
这是一个关于C语言的问题还是与iOS有关的问题?你并没有真正提出一个问题。你卡在哪里了? - Alan Zeino
现在它还没有这样吗?似乎这个数学已经是浮点数了。如果你在输出后没有得到小数点后的数字,请尝试使用“%2.f”的格式说明符。先从普通的%f开始尝试。 - Seva Alekseyev
顺便提一下,在 double answer = number1+([textField2.text doubleValue]); 中不需要括号。可以写成 double answer = number1+[textField2.text doubleValue]; - sudo rm -rf
我也不建议将您的文本设置为空字符串。使用Nil就可以了,这样您就不会使用autorelease对象了。 - Wayne Hartman
1个回答

5

我认为你的格式可能有误。你期望得到什么输出,实际又得到了什么?

如果我猜对了的话,你可以尝试这样做:

label.text = [NSString stringWithFormat:@"%5.2f", answer];

这里的5表示总共数字位数(用于对齐),2表示保留两位小数。

编辑:避免内存泄漏,正如donkim的评论所提到的!


以前从未使用过这个网站,但它真是太棒了!回答非常迅速。感谢你,Dave,正是我所需要的。 - Skene
没问题,Skene。一个赞和一个被接受的答案(绿色勾)将使它更有价值! :) 这也会给你更多的声望点,并使人们更有可能在未来帮助你。享受吧! - Dave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接