当前位置: 首页 > 知识库问答 >
问题:

用Swift[duplicate]从Double创建NSDecimalNumber或Decimal

幸越泽
2023-03-14

试图创建一个十进制(或NSDecimalNumber)从给定的双倍性价比计算在我的应用程序。我在Xcode10中使用Swift4。

但它会生成以下错误的值。

let doubleVal: Double = 56.203
Decimal(doubleVal)               // Wrong Answer: 56.20299999999998976
Decimal.init(doubleVal)          // Again Wrong Answer: 56.20299999999998976
Decimal(string: "56.203")!      // Correct Decimal: 56.203

我如何用SWIFT从给定的双倍值中生成一个小数?

共有1个答案

廖永长
2023-03-14

当Swift将一个以10为基数的十进制数(56.203)转换为二进制数时,总会出现一些浮点错误。正如您已经说明您正在使用这些来进行金钱计算,建议使用int(可能在向用户显示时乘以1000?)。

 类似资料:
  • 问题内容: 我发现将UIImage]导出为movie,但是所有这些都在ObjectiveC中,我无法在Swift中弄清楚。 我需要从[UIImage]创建视频 通过上面的链接研究Zoul的答案。第1部分)编写器连线 到目前为止,我有: 我不知道他的正确的Swift版本 问题答案: 构造文字很简单: 至于其他所有内容,我鼓励您通读Apple的The Swift Programming Languag

  • 问题内容: 我试图最终获得一个有效的,但似乎无法将我的字符串数据(来自)放入一个可用的对象中。 我已经看到这种方法的另一种选择: 但是我似乎找不到用例的任何文档。我愿意在必要时将字符串放入其他类型,但是使用Swift 的初始化选项似乎都不是我想要的。 问题答案: 在Swift 3中 在Swift 2中(或者如果您已经有一个实例) 在Swift 1中(或者如果您有swift ): 另请注意,这 是一

  • 问题内容: 我有在Objective-C中创建和NSAlert的代码,但是现在我想在Swift中创建它。 该警报是为了确认用户要删除文档。 我希望“删除”按钮可以运行删除功能,而“取消”按钮只是为了消除警报。 如何在Swift中编写此代码? 问题答案: 在OS X 10.10 Yosemite中已弃用。 迅捷2 返回或根据用户的选择。 表示添加到对话框的第一个按钮,此处为“确定”。 迅捷3 斯威夫

  • 我在Swift中创建了一个单例类,如下所示: 这允许我从任何地方访问共享实例: 虽然这是可行的,但它并没有使这个实例成为整个系统中唯一可能的实例,这就是单例的全部意义。 这意味着我仍然可以创建一个全新的实例,比如: 所以我的问题是:在Swift中是否有办法创建一个真正的单例类,其中只有一个实例可以在系统范围内实现?

  • 我有一个日期存储在DB字符串格式ddMMyyyy和hh: mm和时区。我想根据这些信息创建一个即时,但我不知道如何做到这一点。 像这样的东西

  • 如果我要创建一个数组,并用值初始化它,我会这样做 我想对ArrayList做同样的事情,并有类似的东西 上面这行代码不行,我理解。我试图传达我希望实现的目标。有没有办法在Java做到这一点,而不必做像 或者