回答
在大多数语言格式是
%.2f
你可以看到更多的例子here
编辑:如果你的关心点的显示我也有这个在25.00的情况下
{
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setPositiveFormat:@"0.##"];
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.342]]);
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.3]]);
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.0]]);
}
2010-08-22 15:04:10.614 a.out[6954:903] 25.34 2010-08-22 15:04:10.616 a.out[6954:903] 25.3 2010-08-22 15:04:10.617 a.out[6954:903] 25
在iOS上,我不得不使用`setPositiveFormat:`,因为`setFormat:`方法不存在(仅为Mac定义),但仍然 - 很好的答案,节省了我几个小时的试验,所以+1,非常感谢你:) – FurloSK 2012-10-16 22:16:42
一个问题:是不圆的,但截断。据推测,使用提问者提供的输入值和你的代码,结果不会是他所期望的(22.37)-rather(22.36)。 – 2016-11-08 06:48:18
但是你不能用它进行进一步的计算 – 2017-04-03 15:00:33
可以使用NSDecimalRound功能
[label setText:@"Value: %.2f", myNumber];
您可以使用下面的代码,它格式化到小数点后两位
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:22.368511]];
NSLog(@"Result...%@",numberString);//Result 22.37
斯威夫特4:
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.roundingMode = .up
let str = String(describing: formatter.string(from: 12.2345)!)
print(str)
我打算带着杰森的回答,但我注意到在我的Xcode版本(4.3.3)中,我无法做到这一点。所以经过一些研究后,我发现他们最近改变了班级方法,并删除了所有旧班级的方法。所以这里就是我不得不这样做:
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setMaximumFractionDigits:2];
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.342]]);
value = (round(value*100))/100.0;
使用的NSNumber * aNumber的= [NSNumber的numberWithDouble:号码]。而不是NSNumber * aNumber = [NSNumber numberWithFloat:number];
+(NSString *)roundToNearestValue:(double)number
{
NSNumber *aNumber = [NSNumber numberWithDouble:number];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setUsesGroupingSeparator:NO];
[numberFormatter setMaximumFractionDigits:2];
[numberFormatter setMinimumFractionDigits:0];
NSString *string = [numberFormatter stringFromNumber:aNumber];
return string;
}
要从双删除小数,看看这个输出
的OBJÇ
double hellodouble = 10.025;
NSLog(@"Your value with 2 decimals: %.2f", hellodouble);
NSLog(@"Your value with no decimals: %.0f", hellodouble);
输出将是:
10.02
10
斯威夫特2.1和Xcode 7.2.1
let hellodouble:Double = 3.14159265358979
print(String(format:"Your value with 2 decimals: %.2f", hellodouble))
print(String(format:"Your value with no decimals: %.0f", hellodouble))
的输出将是:
3.14
3
你可以这样做:
NSNumberFormatter* f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setFormat:@0.00"];
// test
NSNumber* a = @12;
NSString* s = [f stringFromNumber:a];
NSLog(@"%@", s);
对于斯威夫特有一个简单的解决方案,如果你不能既进口基金会,用途round()和/或不想要一个String(通常是在Playground中的情况):
var number = 31.726354765
var intNumber = Int(number * 1000.0)
var roundedNumber = Double(intNumber)/1000.0
结果:31.726
- 1. iPhone:圆形双倍数值
- 2. 圆形双到小数点后两位
- 3. 圆形双值至2位十进制数字
- 4. 以2位小数进行双倍转换的字符串
- 5. 截断双精度到2位小数?
- 6. 格式一倍至2位小数
- 7. Bash圆点2位小数点
- 8. C# - 替换“。”到“,”双倍数值
- 9. 如何限制双倍打印的小数位数?
- 10. 力双显示2位小数
- 11. 圆整双数到整数?
- 12. 爪哇圆翻倍并获得双倍
- 13. 的JavaScript Math.round:犯规圆形物体到1位小数
- 14. 在C++中交换双倍数据位
- 15. 从双倍转换为小数
- 16. 验证和2位小数打印双重价值
- 17. 双倍字符串与文化和只有一个小数位
- 18. 获取双精度值的小数位
- 19. 整数加倍并保留小数位
- 20. 从1个十进制转换双精度值到2位小数在J2ME
- 21. 将经度和纬度值(小数)转换为双倍
- 22. 限制双到小数点后两位
- 23. 格式一倍至小数点后2位与领先的0
- 24. 有2位小数
- 25. 圆整数>小数点后两位
- 26. 加2个小数点加倍
- 27. NumberFormatException:无效的双倍:“2”
- 28. 从浮点值打印2位小数
- 29. safari svg与双倍宽度的椭圆
- 30. 这些双精度值如何精确到20位小数?
你想返回与2位小数价值?或者显示2位小数的值? – thelaws 2011-02-13 17:48:31
其实我只是需要显示它 – testndtv 2011-02-13 17:55:39