将数字格式化为字符串时,我可以限制小数点后的字符,例如%.03f
(在点后显示三位数),但如何在点之前删除所有数字?
例如,我希望100.943
格式化为".943"
。
答案 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
希望这就是你所需要的。