Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当四舍五入swift double时,它显示不同的数字_Swift_Double_Rounding - Fatal编程技术网

当四舍五入swift double时,它显示不同的数字

当四舍五入swift double时,它显示不同的数字,swift,double,rounding,Swift,Double,Rounding,当我得到两个数字时,比如5.085和70.085。我的代码将第一个数字舍入为5.09,但第二个数字舍入为70.08。出于某种原因,在进行时,让aux1=aux*100的值变为7008.4999999。有人有解决办法吗 这是我的密码: let aux = Double(value)! let aux1 = aux * 100 let aux2 = (aux1).rounded() let number = aux2 / 100

当我得到两个数字时,比如5.085和70.085。我的代码将第一个数字舍入为5.09,但第二个数字舍入为70.08。出于某种原因,在进行
时,让aux1=aux*100
的值变为7008.4999999。有人有解决办法吗

这是我的密码:

        let aux = Double(value)!
        let aux1 = aux * 100
        let aux2 = (aux1).rounded()
        let number = aux2 / 100
        return formatter.string(from: NSNumber(value: number))!

如果要通过舍入分数位数来设置双精度的格式。不要尝试:

首先,实现这个方法

    func formatDouble(_ double: Double, withFractionDigits digits: Int) -> String{
            let formatter = NumberFormatter()
            formatter.maximumFractionDigits = digits
            let string = formatter.string(from: (NSNumber(floatLiteral: double)))!
            return string

/*if you want a Double instead of a String, change the return value and uncomment the bellow lines*/
            //let number = formatter.number(from: string)!

            //return number.doubleValue
        }
之后,你不能那样打电话

let roundedNumber = formatDouble(Double(value)!, withFractionDigits: 2)

我尝试过这种方法,但没有成功,所以我把
formatter.roundingMode=.halfUp
放在这里,现在两种方法都起作用了,谢谢如果你早些时候明确表示你想要的是取整,也许我会想到这个建议。但我希望它能帮助你找到解决办法。