计算小数位数(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 格式说明符。