我在浮点数中有值25.00,但当我在屏幕上打印它时,它是25.0000000。 如何显示只有两位小数点后的值?
当前回答
在Swift语言中,如果你想要显示你需要这样使用它。要在UITextView中赋值double,例如:
let result = 23.954893
resultTextView.text = NSString(format:"%.2f", result)
如果你想在LOG中显示,就像objective-c使用NSLog()一样,那么在Swift语言中你可以这样做:
println(NSString(format:"%.2f", result))
其他回答
我根据上面的回答做了一个快速的扩展
extension Float {
func round(decimalPlace:Int)->Float{
let format = NSString(format: "%%.%if", decimalPlace)
let string = NSString(format: format, self)
return Float(atof(string.UTF8String))
}
}
用法:
let floatOne:Float = 3.1415926
let floatTwo:Float = 3.1425934
print(floatOne.round(2) == floatTwo.round(2))
// should be true
Swift的另一个方法(不使用NSString):
let percentage = 33.3333
let text = String.localizedStringWithFormat("%.02f %@", percentage, "%")
附注:此解决方案不适用于CGFloat类型,仅用Float & Double测试
你也可以尝试使用NSNumberFormatter:
NSNumberFormatter* nf = [[[NSNumberFormatter alloc] init] autorelease];
nf.positiveFormat = @"0.##";
NSString* s = [nf stringFromNumber: [NSNumber numberWithFloat: myFloat]];
你可能还需要设置否定格式,但我认为解决这个问题已经足够聪明了。
在objective -c中,你想显示2个十进制数的浮点值,然后传递参数指示你想显示多少个小数点 例如0.02f将打印25.00 0.002f将打印25.000
如果你也需要浮动值:
NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", myFloat];
float floatTwoDecimalDigits = atof([formattedNumber UTF8String]);
推荐文章
- 如何设置回退按钮文本在Swift
- 如何比较两个nsdate:哪个是最近的?
- 如何用前导零格式化Java字符串?
- 使UINavigationBar透明
- Swift to Objective-C头未在Xcode 6中创建
- setNeedsLayout vs. setNeedsUpdateConstraints和layoutIfNeeded vs. updateConstraintsIfNeeded
- 不区分大小写的比较
- 有人能解释一下c#中有符号浮点的这种奇怪行为吗?
- round()用于c++中的浮点数
- Java中的浮点和双数据类型
- 编译警告:对于架构i386,没有处理文件的规则
- 为什么浮点数不准确?
- 从ViewController调用App Delegate方法
- 从Pandas聚合结果中格式化/抑制科学符号
- 解释iOS7中automyadjustsscrollviewinsets, extendedlayoutinclesopaquebars, edgesForExtendedLayout之间的区别