我想将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但没有不需要的小数位。它适用于任何给定的数字。 希望你们有一个答案给我! :)
提前谢谢
尼古拉斯
答案 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