将十进制数格式化为一定位数的功能

时间:2018-07-20 07:11:09

标签: ios swift

我有功能:

func toString(number: Decimal, scale: Int) -> String {
    return number
}

我需要一个函数,该函数在“ number”参数中-将接收一个Decimal数字,将其舍入到小数位数(scale参数),然后在String中返回结果。 有人知道怎么做吗?

3 个答案:

答案 0 :(得分:0)

func toString(number: Double, scale: Int)-> String 
{

    var tempNum = number*pow(10.0,Double(scale))
    tempNum.round(.towardZero)

    return "\(tempNum*pow(10,(-1)*Double(scale)))"
}

答案 1 :(得分:0)

extension decimal
    {
        func roundTo(places:Int) -> String
        {
            let divisor = pow(10.0, Double(places))
            return "\((self * divisor).rounded() / divisor)"
        }
    }

我认为此扩展程序可以为您提供帮助。我几乎使用每个项目。

答案 2 :(得分:0)

let numberFormatter = NumberFormatter()
numberFormatter.minimumIntegerDigits = 1
numberFormatter.minimumFractionDigits = 0

func toString(number: NSNumber, scale: Int) -> String {
    numberFormatter.maximumFractionDigits = scale
    return numberFormatter.string(from: number) ?? ""
}

示例:

toString(number: NSNumber(value: 1234.5678), scale: 1) // ANSWER = 1234.6
toString(number: NSNumber(value: 1234.5678), scale: 2) // ANSWER = 1234.57
toString(number: NSNumber(value: 1234.5678), scale: 3) // ANSWER = 1234.568
toString(number: NSNumber(value: 1234.5678), scale: 4) // ANSWER = 1234.5678
toString(number: NSNumber(value: 1234.5678), scale: 5) // ANSWER = 1234.5678