这对你有帮助,我已经测试过了。
let floatValue = 10.99999999
let formatter = NumberFormatter()
formatter.maximumFractionDigits = 2
formatter.roundingMode = .down
let s = formatter.string(from: NSNumber(value: floatValue))
print(s)
更新了的答案还有一个值 10.9 的情况,它应该显示 10.90。
案例 1:当您只想打印实际的十进制数字或最多 2 个十进制数字时
let floatValue = 10.999999
let floatValue1 = 10
let floatValue2 = 10.9
let floatValue3 = 10.91
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 0
formatter.maximumFractionDigits = 2
formatter.roundingMode = .down
let s = formatter.string(from: NSNumber(value: floatValue))
print(s!) // 10.99
let s1 = formatter.string(from: NSNumber(value: floatValue1))
print(s1!) // 10
let s2 = formatter.string(from: NSNumber(value: floatValue2))
print(s2!) // 10.9
let s3 = formatter.string(from: NSNumber(value: floatValue3))
print(s3!) // 10.91
案例 2: 当您总是想打印两位小数时。
let floatValue = 10.999999
let floatValue1 = 10
let floatValue2 = 10.9
let floatValue3 = 10.91
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
formatter.roundingMode = .down
let s = formatter.string(from: NSNumber(value: floatValue))
print(s!) // 10.99
let s1 = formatter.string(from: NSNumber(value: floatValue1))
print(s1!) // 10.00
let s2 = formatter.string(from: NSNumber(value: floatValue2))
print(s2!) // 10.90
let s3 = formatter.string(from: NSNumber(value: floatValue3))
print(s3!) // 10.91
希望你得到你想要的。如果是,请投票,否则请告诉我您的实际要求是什么。
更新了问题的答案。 对于像 10.9999999999999999 这样的值,它的印刷是 11.00,而不是 10.99。
let floatValue3 = 10.99999999999999
let (wholePart, fractionalPart) = modf(floatValue3)
let stringFractionalPart = "\(fractionalPart)"
let stringWholePart = "\(Int(wholePart))"
let aryFractionalPart = stringFractionalPart.components(separatedBy: ".")
var valueToDisplay = stringWholePart
if aryFractionalPart.count >= 2 {
let decimalDigits = aryFractionalPart[1]
let digit2 = decimalDigits.prefix(2)
valueToDisplay = "\(valueToDisplay).\(digit2)"
}
print(valueToDisplay)
现在希望我能满足你的要求。