我正在解码我希望格式化的小数字的字符串版本并返回为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
,我无法弄清楚原因。
在这里会有任何帮助。谢谢
答案 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)
仅供参考:此问题仅在设备上进行测试时发生在我身上,在模拟器上,格式化程序可能是我选择了美国语言环境(尽管我已激活了本地化功能,但它本来是德语的)。