swift 计算小数点右边的小数位数

1tuwyuhd  于 2023-06-28  发布在  Swift
关注(0)|答案(1)|浏览(189)

我想数小数点右边的数字,而只有零

**输入:**1.00000000
**期望输出:**8
验证码:

let decimalDigits = String(totalValue).split(separator: ".").last?.count ?? 0

extension Double {
    func decimalCount() -> Int {
        if self == Double(Int(self)) {
            return 0
        }

        let integerString = String(Int(self))
        let doubleString = String(Double(self))
        let decimalCount = doubleString.count - integerString.count - 1

        return decimalCount
    }
}

密码:

> if to right of decimal all zeros 
> count number of zeros

如果小数点右边都是零,我该如何解释小数点的计数?
在上面的代码中,我可以说明小数的数量。但如果小数点都是零,我就不能说明小数点的个数了。

djmepvbi

djmepvbi1#

您所描述的输入是一个String,而不是一个Double(或任何类型的数字)。数字是由它们的值定义的,而不是它们的数字表示。所以任何解决方案都适用于String。
假设你已经修剪了字符串,并且知道它只有数字,下面的方法会起作用:

let value = "1.00000000"

func countFractionalDigits(_ string: String) -> Int {
    guard let decimalIndex = string.firstIndex(of: ".") else { return 0 }
    return string.distance(from: decimalIndex, to: string.endIndex) - 1
}

countFractionalDigits(value)   // 8

如果你需要它来处理Double或其他类型的数字,那么你必须应用格式化程序将其转换为String,此时你需要决定有多少位数。数字不携带任何关于用于创建它们的数字的信息。(他们怎么可能?“8.00 / 2.0”的结果中有多少个尾随零?)

相关问题