Objective c 如何防止目标c中的双精度科学记数法?

Objective c 如何防止目标c中的双精度科学记数法?,objective-c,Objective C,从双变量设置UITextfield文本值时,如何防止使用科学记数法? 我尝试将其格式化为“%f”,但随后它将-0显示为-0.00000。用“%g”格式化使其显示指数 %.0f 表示具有0个小数位数的浮点 编辑 因为您似乎还需要一些精度,所以应该使用一个更灵活的实例 您可以使用and,因此零将是0,但您仍然能够获得精度: NSNumberFormatter * fmt; fmt = [ [ NSNumberFormatter new ] autorelease ]; [ fmt setMin

从双变量设置UITextfield文本值时,如何防止使用科学记数法? 我尝试将其格式化为“%f”,但随后它将-0显示为-0.00000。用“%g”格式化使其显示指数

%.0f
表示具有0个小数位数的浮点

编辑

因为您似乎还需要一些精度,所以应该使用一个更灵活的实例

您可以使用and,因此零将是
0
,但您仍然能够获得精度:

NSNumberFormatter * fmt;

fmt = [ [ NSNumberFormatter new ] autorelease ];

[ fmt setMinimumFractionDigits: 0 ];
[ fmt setMaximumFractionDigits: 2 ];
[ fmt setMinimumIntegerDigits:  1 ];

NSLog( @"%@", [ fmt stringFromNumber: [ NSNumber numberWithFloat: ( float )0 ] ] );
NSLog( @"%@", [ fmt stringFromNumber: [ NSNumber numberWithFloat: ( float )0.42 ] ] );
表示具有0个小数位数的浮点

编辑

因为您似乎还需要一些精度,所以应该使用一个更灵活的实例

您可以使用and,因此零将是
0
,但您仍然能够获得精度:

NSNumberFormatter * fmt;

fmt = [ [ NSNumberFormatter new ] autorelease ];

[ fmt setMinimumFractionDigits: 0 ];
[ fmt setMaximumFractionDigits: 2 ];
[ fmt setMinimumIntegerDigits:  1 ];

NSLog( @"%@", [ fmt stringFromNumber: [ NSNumber numberWithFloat: ( float )0 ] ] );
NSLog( @"%@", [ fmt stringFromNumber: [ NSNumber numberWithFloat: ( float )0.42 ] ] );

您可以限制格式字符串中的小数位数:

%.0f
将四舍五入为整数

%.1f

将四舍五入为1位小数,以此类推,分别将-0打印为
-0
-0.0

您可以限制格式字符串中的小数位数:

%.0f
将四舍五入为整数

%.1f

将四舍五入为1位小数,以此类推,分别将-0打印为
-0
-0.0

我仍然需要保持小数精度,但清除右侧不必要的0,如果值为0,'-'和'.'如果没有细分,我仍然需要保持小数精度,但清除右侧不必要的0,如果值为0,“-”,如果没有细分,则“.”仍然需要显示一些十进制精度。截断分数并不能解决这个问题。谢谢,根据你的建议,我以一种稍微不同的方式使用了NSNumberFormatter(同样,我不想限制精度)<代码>NSNumberFormatter*格式化程序=[[NSNumberFormatter alloc]init];[格式化程序setNumberStyle:NSNumberFormatterDecimalStyle];myTextField.text=[formatter stringFromNumber:[NSNumber numberWithDouble:self.myDoubleValue]]现在我正在尝试找出如何进行反向转换。从2000000.45这样的字符串到double。(我是否必须创建自己的方法来删除格式,或者cocoa中是否存在现有方法?)感谢对反向操作的帮助,最好使用。但是如果您的文本已经在NSControl中,您也可以简单地使用
doubeValue
。我仍然需要显示一些十进制精度。截断分数并不能解决这个问题。谢谢,根据你的建议,我以一种稍微不同的方式使用了NSNumberFormatter(同样,我不想限制精度)<代码>NSNumberFormatter*格式化程序=[[NSNumberFormatter alloc]init];[格式化程序setNumberStyle:NSNumberFormatterDecimalStyle];myTextField.text=[formatter stringFromNumber:[NSNumber numberWithDouble:self.myDoubleValue]]现在我正在尝试找出如何进行反向转换。从2000000.45这样的字符串到double。(我是否必须创建自己的方法来删除格式,或者cocoa中是否存在现有方法?)感谢对反向操作的帮助,最好使用。但是如果您的文本已经在NSControl中,您也可以简单地使用
doubeValue