swift – 格式化未知数字的小数位数

swift – 格式化未知数字的小数位数,第1张

概述我打印出一个我不知道的数字.在大多数情况下,数字是完整的或具有尾随.5.在某些情况下,数字以.25或.75结尾,很少这个数字到千分之一的地方.我如何具体检测最后一个案例?现在我的代码检测到一个整数(0位小数),正好是.5(1位小数),然后在所有其他方案中恢复到2个小数点,但是当它需要时我需要转到3. class func getFormattedNumber(number: Float) -> N 我打印出一个我不知道的数字.在大多数情况下,数字是完整的或具有尾随.5.在某些情况下,数字以.25或.75结尾,很少这个数字到千分之一的地方.我如何具体检测最后一个案例?现在我的代码检测到一个整数(0位小数),正好是.5(1位小数),然后在所有其他方案中恢复到2个小数点,但是当它需要时我需要转到3.
class func getFormattednumber(number: float) -> Nsstring {    var formattednumber = Nsstring()    // Use the absolute value so it works even if number is negative    if (abs(number % 2) == 0) || (abs(number % 2) == 1) {  // Whole number,even or odd        formattednumber = Nsstring(format: "%.0f",number)    }    else if (abs(number % 2) == 0.5) || (abs(number % 2) == 1.5) {        formattednumber = Nsstring(format: "%.1f",number)    }    else {        formattednumber = Nsstring(format: "%.2f",number)    }    return formattednumber}
float使用二进制(IEEE 754)表示,无法表示
精确的所有小数部分.例如,
let x : float = 123.456

在x中存储字节42f6e979,大约是
123.45600128173828.那么x有3个或14个小数位吗?

如果指定了最大数,则可以使用NSNumberFormatter
应该呈现的十进制数字:

let fmt = NSNumberFormatter()fmt.locale = NSLocale(localeIDentifIEr: "en_US_POSIX")fmt.maximumFractionDigits = 3fmt.minimumFractionDigits = 0println(fmt.stringFromNumber(123)!)      // 123println(fmt.stringFromNumber(123.4)!)    // 123.4println(fmt.stringFromNumber(123.45)!)   // 123.45println(fmt.stringFromNumber(123.456)!)  // 123.456println(fmt.stringFromNumber(123.4567)!) // 123.457

Swift 3/4更新:

let fmt = NumberFormatter()fmt.locale = Locale(IDentifIEr: "en_US_POSIX")fmt.maximumFractionDigits = 3fmt.minimumFractionDigits = 0print(fmt.string(for: 123.456)!) // 123.456
总结

以上是内存溢出为你收集整理的swift – 格式化未知数字的小数位数全部内容,希望文章能够帮你解决swift – 格式化未知数字的小数位数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存