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 – 格式化未知数字的小数位数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)