ios - 如何在不丢失精度的情况下将字符串格式化为十进制?
问题描述
让我们看一下这个简单的例子
let formatter = NumberFormatter()
formatter.number(from: "0.945")?.decimalValue // result: 0.945
formatter.number(from: "0.94")?.decimalValue // result: 0.9399999999999999
我怎样才能实现"0.94"
转换为具有完全相同值的十进制,例如0.94
?
我更喜欢解决方案,NumberFormatter
因为我想将此字符串转换为十进制转换也用于货币金额,例如"$0.94"
和"0.94€"
解决方案
这个网站包含解释。基本上,计算机使用无法非常准确地表示它们的系统来存储这些数字。
如果您需要更高的准确性,我建议使用十进制类型,例如Decimal
or NSDecimalNumber
:
Decimal(string: "0.945")
Decimal(string: "0.94")
推荐阅读
- php - 对象symfony 4的实体计数
- node.js - 如何在 Azure VM 中显示 IPv4Address?
- tsql - 提取物理位置的一部分
- angular - 特别是一个路由器链接在角度 7 中不起作用
- python - Python pandas 格式 datetime.datetime 添加到列表的对象
- r - 在 Diffeqr 包中指定 maxiter
- python - 了解 import X 和 from XY import Z 的区别
- django - highcharts 和 django 传递字典
- java - 选修的
对于方法的输入参数 - ios - libdispatch(apple-open-source)中的这段代码是什么意思?