swift – 格式化未知数字的小数位数
发布时间:2020-12-14 02:28:33 所属栏目:百科 来源:网络整理
导读:我打印出一个我不知道的数字.在大多数情况下,数字是完整的或具有尾随.5.在某些情况下,数字以.25或.75结尾,很少这个数字到千分之一的地方.我如何具体检测最后一个案例?现在我的代码检测到一个整数(0位小数),正好是.5(1位小数),然后在所有其他方案中恢复到2个
我打印出一个我不知道的数字.在大多数情况下,数字是完整的或具有尾随.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,大约是 如果指定了最大数,则可以使用NSNumberFormatter let fmt = NSNumberFormatter() fmt.locale = NSLocale(localeIdentifier: "en_US_POSIX") fmt.maximumFractionDigits = 3 fmt.minimumFractionDigits = 0 println(fmt.stringFromNumber(123)!) // 123 println(fmt.stringFromNumber(123.4)!) // 123.4 println(fmt.stringFromNumber(123.45)!) // 123.45 println(fmt.stringFromNumber(123.456)!) // 123.456 println(fmt.stringFromNumber(123.4567)!) // 123.457 Swift 3/4更新: let fmt = NumberFormatter() fmt.locale = Locale(identifier: "en_US_POSIX") fmt.maximumFractionDigits = 3 fmt.minimumFractionDigits = 0 print(fmt.string(for: 123.456)!) // 123.456 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |