gpt4 book ai didi

swift - 没有科学记数法和四舍五入

转载 作者:行者123 更新时间:2023-12-01 07:12:33 25 4
gpt4 key购买 nike

我想将数字四舍五入到 6 位,但我不希望它使用科学记数法显示。我正在使用此代码将小数点四舍五入到 6 位,但如果该值真的很小,它仍然使用科学记数法显示它。我知道我可以使用数字格式化程序(也显示在下面)来删除科学记数法,但如果我这样做,它会返回一个字符串,所以我不能将字符串四舍五入到一定数量的小数位。如果我先进行四舍五入,那仍然不适用于所有情况。它仍然显示一些没有四舍五入的数字。实现这一目标的最佳方法是什么?它应该适用于数字无限长或重复的所有不同场景

extension Double {
// Rounds the double to decimal places value
func rounded(toPlaces places:Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}




let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = NumberFormatter.Style.decimal
numberFormatter.number(from:"")

我尝试使用这段代码

let currentValue = 1/2.3344 //answer is 0.42837559972584...
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = NumberFormatter.Style.decimal
numberFormatter.maximumFractionDigits = 6
guard let finalNum = numberFormatter.number(from: String(describing: currentValue)) else {return nil}
text = String (describing: finalNum)

我想让它显示 0.428375。该值四舍五入到小数点后 6 位。

当当前值为:let currentValue = 1/233442 即 0.00000428371... 我希望它显示 0.000004。小数点四舍五入到小数点后 6 位,而不是科学计数法。

当当前值是这样的:let currentValue = 1/2334429 我希望它显示 0,因为这是四舍五入到小数点后 6 位的值。

最佳答案

number(from: someString) 方法将字符串转换为数字,你想要相反的方式:

let currentEntry = 1/2.3344

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.maximumFractionDigits = 6

guard let text = numberFormatter.string(for: currentEntry) else {
// ...
}
print(text) // 0.428376

请注意,您的 String(describing:) 转换只会隐藏问题。你真的应该避免 String(describing:) (即使编译器建议它作为一个修复!),它几乎从不做你需要的。

关于swift - 没有科学记数法和四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46836926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com