【问题标题】:Decimal values get remove when convert from String to Decimal in Swift在 Swift 中从 String 转换为 Decimal 时删除十进制值
【发布时间】:2019-09-24 01:09:43
【问题描述】:

请检查这个例子

 let strValue = "12.00"
 let decimalValue = Decimal(string: strValue) // 12

它总是返回 12 而不是 12.00 我也尝试使用NSNumberFloatDouble,但它总是删除零。

你能帮我提前谢谢

【问题讨论】:

  • 这有什么意义?你的目标是什么?
  • 我想要 nsdecimalnumber 形式的 12.00 意味着我的字符串值是 12.0000 然后十进制它给出 12 但我不会得到 12.0000 吗?
  • 1212.00相同的数字。如果您想显示带有小数位的数字,请使用数字格式化程序。
  • 值将不带零存储。但是您可以根据需要打印。尝试格式化字符串。 String(format: "%.2f", floatValue).
  • 再次:作为 数字 12 和 12.00 之间没有区别,因此您的问题不清楚。试试print(12 == 12.00)

标签: ios swift string swift3 nsdecimalnumber


【解决方案1】:

就像马丁说的那样。 12 和 12.00 是同一个数字。逗号后面有多少个 0 并不重要。

虽然数字保持不变,但表示是不同的主题。

String(format: "%.6f", 12) 将给出 12.000000 作为字符串。

编辑:
十进制是一个结构。数字的含义保持不变。把它扔到操场上。

import UIKit
let decimal = Decimal(12.0000000000)
let justAnInt = 12

let sameDecimal = decimal == Decimal(justAnInt)

看到了吗?数学中没有无限0这样的东西。零是有限的。 12.000000 的 Decimal 和 12 创建的 Decimal 是相同的。

【讨论】:

  • 我想要十进制数字而不是字符串。像 12.000000
  • 是的,我同意标记声明,但我需要哪个数字是我想要的十进制数字。
  • 十进制只是一个结构,它与 Int 或 Double 具有相同的信息
  • 你好 Helge Becker,我不明白你说的我知道 struct 。能否请您简要解释一下,以便我可以解决此问题?谢谢
  • 查看编辑。要解决您的问题,请尝试反过来思考。如果您使用小数,请接受它们仅存储相关信息(不包含 0 的列表)。相反,为什么或在哪里需要 12 和许多 0?
【解决方案2】:

1212.00 之间没有区别。 我们唯一需要的就是将值呈现给用户。因为您可以使用格式化字符串。

喜欢:

String(format: "%.2f", floatValue)

【讨论】:

  • 你能不能把这个值作为十进制给我,因为你写了 %2 并且对于我来说它没有修复它取决于用户!谢谢
猜你喜欢
  • 2018-09-22
  • 2020-11-23
  • 1970-01-01
  • 2018-01-21
  • 2017-04-11
  • 2016-12-25
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多