如何将NSNumber截断/四舍五入到小数点后一位

时间:2020-06-21 20:47:03

标签: ios swift mapbox

有人知道我如何将NSNumber截断或舍入到小数点后一位?

例如,我有一个1.45654的NSNumber,我想得到1.41.5吗?

我尝试使用trunc:mgl_round:(来自mapbox),但它们始终返回整数。

这是一个小片段。


 let depthTruncated = NSExpression(forFunction: "trunc:", arguments: [depthValue])

2 个答案:

答案 0 :(得分:0)

使用round方法舍入小数位。

let number: NSNumber = 1.45654
let roundedNumber = round(Double(truncating: number) * 10)/10
print(roundedNumber)

答案 1 :(得分:0)

还有其他几个选择:

  1. 是否需要将其精确舍入到小数点后一位?如果是这样,您可以使用Decimal

     var number = NSNumber(1.45654)
    
     var decimalValue = number.decimalValue
     var result: Decimal = 0
     NSDecimalRound(&result, &decimalValue, 1, .plain)
     print(result)
    
  2. 但是,如果仅要将其显示到小数点后一位,则可以使用NumberFormatter

     let number = NSNumber(1.45654)
    
     let formatter = NumberFormatter()
     formatter.numberStyle = .decimal
     formatter.minimumFractionDigits = 1
     formatter.maximumFractionDigits = 1
     guard let result = formatter.string(for: number) else { return }
     print(result)