Iphone 如何在没有科学符号或小数的情况下格式化数字

Iphone 如何在没有科学符号或小数的情况下格式化数字,iphone,objective-c,nsstring,stringwithformat,Iphone,Objective C,Nsstring,Stringwithformat,我的目标是为iPhone创建一个客户计算器应用程序,并使用Xcode编写我的应用程序。我找不到解决方案的问题是,如何在不使用科学记数法或小数位数的情况下格式化数字 我试过 buttonScreen.text = [NSString stringWithFormat:@"%f",currentNumber]; buttonScreen.text = [NSString stringWithFormat:@"%g",currentNumber]; %f格式总是在小数点后打印6位数字,因此如果用户

我的目标是为iPhone创建一个客户计算器应用程序,并使用Xcode编写我的应用程序。我找不到解决方案的问题是,如何在不使用科学记数法或小数位数的情况下格式化数字

我试过

buttonScreen.text = [NSString stringWithFormat:@"%f",currentNumber];

buttonScreen.text = [NSString stringWithFormat:@"%g",currentNumber];
%f格式总是在小数点后打印6位数字,因此如果用户键入5,则显示5.000000

%g格式在6位数字后跳转为科学符号,因此1000000在显示时变为1e+06

我希望能够在没有无意义小数或科学符号的情况下显示以下数字:


您与Xcode和Objective-c的交互不像您在这里所怀疑的那样多,底层实现是。退房

您与Xcode和Objective-c的交互不像您在这里所怀疑的那样多,底层实现是。退房

那么你希望它看起来像什么?stringWithFormat格式是旧的C sprintf的超集。那么您是否尝试过使用d和变体来满足您的需求?

那么您希望它看起来像什么?stringWithFormat格式是旧的C sprintf的超集。您是否尝试过使用d和变体来满足您的需求?

对于浮点数格式,您可以使用%f,并且必须指定最小字段宽度和字符精度。如果使用%4.2f,则表示如果使用的宽度小于4,则最小宽度为4个字符,左侧将用空格填充,精度为2个字符。如果需要10个最小宽度字符和0个十进制精度字符,请使用%10.0f

在您的特殊情况下,应该使用%.0f表示没有小数精度的数字

buttonScreen.text = [NSString stringWithFormat:@"%.0f",currentNumber];
你可以找到一个快速参考。不是objective-c文档,而是等效的

为完整起见,您可以在以下文档中找到NSString格式的规范:

在这里:

编辑以进行截断:
但是,您应该阅读一些有关浮点表示、精度和强制转换的内容,以了解可能出现的不希望出现的行为。

对于浮点数格式,您可以使用%f,并且必须指定最小字段宽度和字符精度。如果使用%4.2f,则表示如果使用的宽度小于4,则最小宽度为4个字符,左侧将用空格填充,精度为2个字符。如果需要10个最小宽度字符和0个十进制精度字符,请使用%10.0f

在您的特殊情况下,应该使用%.0f表示没有小数精度的数字

buttonScreen.text = [NSString stringWithFormat:@"%.0f",currentNumber];
你可以找到一个快速参考。不是objective-c文档,而是等效的

为完整起见,您可以在以下文档中找到NSString格式的规范:

在这里:

编辑以进行截断: 但是,您应该阅读一些有关浮动表示法、精度和铸造的内容,以了解可能出现的不希望出现的行为。

请查看

如果配置正确,它可以在适当时添加逗号。您还需要告诉它要使用多少个有效数字。

看看


如果配置正确,它可以在适当时添加逗号。您还需要告诉它要使用多少个有效数字。

我对您的问题进行了一些编辑,以符合一般SO样式准则,并将%s添加到格式字符串中。如果我歪曲了什么,请让我知道!还有,好的第一个问题。如果你想避免小数,我建议使用八进制。当然,您可以使用二进制,但它不是很紧凑。我对您的问题进行了一些编辑,以符合常规SO样式准则,并将%s添加到格式字符串中。如果我歪曲了什么,请让我知道!还有,好的第一个问题。如果你想避免小数,我建议使用八进制。当然,你可以使用二进制,但它不是很紧凑。嗨,路易塞斯皮诺扎!我尝试使用%.0f,它似乎可以清除用科学记数法书写的大数字,但当我尝试在数字中添加一个小数点时,例如15400179.85,该数字会四舍五入,因此输出为15400180%。哦,没错。你想要达到的行为是什么?。对我来说,当我实现一个没有小数的计算器时,舍入小数似乎是正确的,但也许你有什么想法。是否要截断数字?在这种情况下,应将浮点转换为整数,并用%d打印。但是,你应该阅读一些关于浮动表示法、精度和转换的知识,以了解可能出现的不希望出现的行为。我仍然希望数字中的小数不进行舍入或截断,在数字的末尾没有额外的0。很抱歉给你带来了困惑!在这种情况下,我建议您接受这个答案,单击复选符号,然后提出一个新问题。满足新要求的答案将与当前问题相冲突。嗨,LuisEspinoza!我尝试使用%.0f和
它似乎可以清除用科学记数法写的大数字,但当我尝试在数字(例如15400179.85)上添加一个小数时,该数字会四舍五入,因此输出为15400180%。哦,没错。你想要达到的行为是什么?。对我来说,当我实现一个没有小数的计算器时,舍入小数似乎是正确的,但也许你有什么想法。是否要截断数字?在这种情况下,应将浮点转换为整数,并用%d打印。但是,你应该阅读一些关于浮动表示法、精度和转换的知识,以了解可能出现的不希望出现的行为。我仍然希望数字中的小数不进行舍入或截断,在数字的末尾没有额外的0。很抱歉给你带来了困惑!在这种情况下,我建议您接受这个答案,单击复选符号,然后提出一个新问题。满足新要求的答案将与当前问题相冲突。
buttonScreen.text = [NSString stringWithFormat:@"%d",(int)currentNumber];