NumberFormatter无法正常工作

时间:2018-02-24 23:28:03

标签: ios swift

我正在解码我希望格式化的小数字的字符串版本并返回为Double

let str = "0.945404"
let numberFormatter = NumberFormatter()
numberFormatter.maximumFractionDigits = 2
numberFormatter.roundingMode = .halfUp
numberFormatter.numberStyle = .decimal

print(numberFormatter.number(from: str))

numberFormatter.number(from: str)似乎返回nil,我无法弄清楚原因。

在这里会有任何帮助。谢谢

2 个答案:

答案 0 :(得分:2)

如果您要获得固定格式的十进制字符串,则需要使用匹配的语言环境设置数字格式化程序。如果不这样做,格式化程序将假定用户的语言环境,并且许多语言环境不使用<!doctype html> <html> <body> <div> <input type="file" /> <div id="preview"> file size: <span id="file-size"></span><br /> image preview: <img id="img" /><br /> image size: <span id="image-size"></span> </div> </div> <script> const img = document.getElementById('img') document.addEventListener('dropenter', e => e.preventDefault()) document.addEventListener('dragover', e => e.preventDefault()) function renderImage(file) { document.getElementById('file-size').innerText = file.size const reader = new FileReader() reader.readAsDataURL(file) reader.onload = e => { img.src = e.target.result img.onload = () => document.getElementById('image-size').innerText = `${img.width}x${img.height}` } } document.addEventListener('drop' , e => { e.preventDefault() renderImage(e.dataTransfer.files[0]) }) document.querySelector('input').addEventListener('change', e => { renderImage(e.target.files[0]) }) </script> </body> </html>作为小数分隔符。

将字符串转换为数字时,也无需设置小数位数。稍后,当向用户显示号码时,您可以使用另一个号码格式化程序(此时使用用户的语言环境)以及所需的小数位数来获得可显示的字符串。

.

答案 1 :(得分:0)

仅供参考:此问题仅在设备上进行测试时发生在我身上,在模拟器上,格式化程序可能是我选择了美国语言环境(尽管我已激活了本地化功能,但它本来是德语的)。