- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试为我的 iOS 应用程序创建有意义的可访问性标签,但遇到了我认为是 NSNumberFormatter 的一个奇怪问题/限制。
import UIKit
let decimal = 171.8926
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
formatter.maximumFractionDigits = 2
print(formatter.stringFromNumber(decimal)!)
// "171.89"
formatter.numberStyle = .SpellOutStyle
print(formatter.stringFromNumber(decimal)!)
// "one hundred seventy-one point eight nine two six\n"
似乎 .SpellOutStyle
出于某种原因不支持 maximumFractionDigits
。
我是不是遗漏了什么,还是我必须像动物一样自己截断它们?
let truncDecimal = Double(Int(decimal * 100)) / 100.0
print(formatter.stringFromNumber(truncDecimal)!)
// "one hundred seventy-one point eight nine\n"
我可以使用格式化程序去除数字而不是单词,这似乎很疯狂。
最佳答案
Swift NSNumberFormatter numberStyle SpellOutStyle 打印当前语言环境的完整数字。
为了做你想做的事,我建议创建一个双重扩展:
extension Double {
func roundToPlaces(places: Int) -> Double {
let divisor = pow(10.0, Double(places))
return round(self * divisor) / divisor
}
}
然后你可以这样调用你的代码:
let decimal = 171.8976
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
formatter.maximumFractionDigits = 2
print(formatter.stringFromNumber(decimal)!)
// "171.89"
formatter.numberStyle = .SpellOutStyle
print(formatter.stringFromNumber(decimal.roundToPlaces(2))!)
// "one hundred seventy-one point nine"
关于swift - 使用 NSNumberFormatter SpellOutStyle 限制小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37112657/
是否有类似于 SpellOutStyle 的 NSNumberFormatter 带有“and”我正在尝试解决 Project Euler #17,它需要用“and”写出数字 例如,556 就是五百五
当我对较大的数字(不是溢出类型的数字)使用 NSNumberFormatterStyle.SpellOutStyle 时,它似乎在千万亿中的某个地方分解。 let formatter = NSNu
当我对较大的数字(不是溢出类型的数字)使用 NSNumberFormatterStyle.SpellOutStyle 时,它似乎在千万亿中的某个地方分解。 let formatter = NSNu
我正在尝试为我的 iOS 应用程序创建有意义的可访问性标签,但遇到了我认为是 NSNumberFormatter 的一个奇怪问题/限制。 import UIKit let decimal = 171.
我是一名优秀的程序员,十分优秀!