将数字格式化为字符串时删除整数位

时间:2011-11-23 15:00:26

标签: objective-c ios cocoa-touch nsstring string-formatting

将数字格式化为字符串时,我可以限制小数点后的字符,例如%.03f(在点后显示三位数),但如何在点之前删除所有数字?

例如,我希望100.943格式化为".943"

4 个答案:

答案 0 :(得分:2)

我认为你做到这一点的唯一方法是使用数学删除小数点前的数字,或者事后的字符串操作,如componentsSeparatedByString:@"."

删除它的简单数学方法是:

float initialValue = 100.943f;
int beforeDecimal = (int)initialValue;
float afterDecimal = initialValue - beforeDecimal;

答案 1 :(得分:2)

使用NSNumberFormatter,并将其maximumIntegerDigits设置为0:

float f = 123.456;
NSNumber * nF = [NSNumber numberWithFloat:f];
NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumIntegerDigits:0];
NSLog(@"%@", [formatter stringFromNumber:nF]);
  

2011-11-23 18:36:59.138 NoIntegerDigits [21834:903] .456

答案 2 :(得分:1)

好的,我想我现在得到了你的问题..

这是另一种解决方案,你只能从字符串中获取字符串。

示例:

NSString *floatAsString = @"123.456";
NSArray stringDivisions = [floatAsString componentsSeparatedByString:@"."];

这里你将得到的数据是:123和456分隔字符串对象。 一旦你得到两个单独的字符串,你就可以玩它们。

这是你需要的吗?

答案 3 :(得分:0)

这样做的简单方法, 这是一个例子,

  

首先将字符串转换为浮点值。

     

float x = 102.943;

     

int y = x;

     

float ans = x%y;

     

NSLog(@“\ nx:%f \ ny:%d \ nans:%f”,x,y,ans);

所以输出将是:

  

x:102.943000

     

y:102

     

ans:0.943000

希望这就是你所需要的。