计算小数位数(Swift)

时间:2015-01-09 16:30:50

标签: swift calculator rounding

我想将Double舍入到特定数量的小数位。 我希望它四舍五入到它自己的确切长度。

例如" 1.23"应该留下来" 1.23"," 1.230"相反应改为" 1.23"等

我正在尝试计算小数位并用该值舍入Double。

我一直在Playground尝试,但不知何故,Swift总是会轮数并使用不需要的小数位。

这是我到目前为止所得到的

var someDouble:Double
var someString:String
var lenghtInt:Int



someDouble = 42.123                                 // create a float

someDouble = someDouble % 1                         // get rid of everything infront of the comma

someString = NSString(format: "%f", someDouble)     // format float into string

lenghtInt = someString.utf16Count - 2               // count lenght, substract 2 (for "0" & ".")

它告诉我我有6个小数位,因为它放了" 000"最后。

我该如何解决这个问题?

顺便说一下:

也许我认为完全错了。所有这一切的目的是在标签中显示Float / Double但没有不需要的小数位。它适用于任何给定的数字。 希望你们有一个答案给我! :)

提前谢谢

尼古拉斯

2 个答案:

答案 0 :(得分:2)

尝试:

let s1 = String(format: "%.19g", 1.2345) // 1.2345

不确定swift printf是否支持'%g'虽然。

编辑:19是基于double的精度,显示所有(非零)数字,但最后不是...0001。 '%G'是' natural'的printf格式说明符。浮点数的表示。

答案 1 :(得分:1)

尝试

let s1 = String(format: "%.2f", 1.2345) // 1.23
let s2 = String(format: "%.2f", 1.2) // 1.20
let s3 = String(format: "%.2f", 42.1239420000) // 42.12