计算小数位数(Swift)
Count amount of decimal places (Swift)
我想将 Double 舍入到特定数量的小数位。
我希望它四舍五入到它本身的确切长度。
例如“1.23”应保留为“1.23”,“1.230”应更改为“1.23”等。
我正在尝试计算小数位数并用该值四舍五入。
我一直在 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 但没有不需要的小数位。它应该适用于任何给定的数字。
希望你们能给我一个答案! :)
提前致谢
尼克拉斯
尝试
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
尝试:
let s1 = String(format: "%.19g", 1.2345) // 1.2345
但不确定 swift printf 是否支持“%g”。
编辑:19 基于双精度,显示所有(非零)数字,但不在末尾得到 ...0001
。 '%g' 是 'natural' 表示浮点数的 printf 格式说明符。
我想将 Double 舍入到特定数量的小数位。 我希望它四舍五入到它本身的确切长度。
例如“1.23”应保留为“1.23”,“1.230”应更改为“1.23”等。
我正在尝试计算小数位数并用该值四舍五入。
我一直在 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 但没有不需要的小数位。它应该适用于任何给定的数字。 希望你们能给我一个答案! :)
提前致谢
尼克拉斯
尝试
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
尝试:
let s1 = String(format: "%.19g", 1.2345) // 1.2345
但不确定 swift printf 是否支持“%g”。
编辑:19 基于双精度,显示所有(非零)数字,但不在末尾得到 ...0001
。 '%g' 是 'natural' 表示浮点数的 printf 格式说明符。