舍入用于NSString中的双精度数

The*_*imp 2 double objective-c rounding nsstring

例如,我有一种情况,我有很多不同的double价值观1.00, 0.25 and 2.50.我想围绕这些,doubles使他们成为1, 0.25 and 2.5; 换句话说,我想删除任何尾随的0.有没有办法做到这一点?

目前我一直在使用%.2f,我想知道我是否可以利用这个,但以某种方式适应它.请有人帮帮我吗?

Jos*_*ell 12

只要您只谈论显示,这很容易.您想要的格式说明符%g:

double参数应以样式fe(或在样式F或转换说明符E的情况下G)转换,精度指定有效位数[...] 尾随零应从小数部分中删除.结果 [...]

double twopointfive = 2.500;
double onepointzero = 1.0;
double pointtwofive = .25000000000;
NSLog(@"%g %f", twopointfive, twopointfive);
NSLog(@"%g %f", onepointzero, onepointzero);
NSLog(@"%g %f", pointtwofive, pointtwofive);
Run Code Online (Sandbox Code Playgroud)

2011-12-06 21:27:59.180 TrailingZeroes [39506:903] 2.5 2.500000
2011-12-06 21:27:59.184 TrailingZeroes [39506:903] 1 1.000000
2011-12-06 21:27:59.185 TrailingZeroes [39506: 903] 0.25 0.250000

相同的格式说明符可以与a一起使用NSNumberFormatter,这也可以让您对有效数字进行一些控制.

当然,无法从数字存储在内存中的方式中删除尾随零.