停止自动截断 Double 的无关紧要的小数

Stop Automatic Insignificant Decimal Truncating of Double

我有一个 double 我想完全按原样存储,不使用以下任何格式:

示例 #1:double a = 12. 格式化为:12

示例 #2:double b = 50.0 格式化为:50

例 #3:double c = 88.0000000000 格式化为:88

这可能吗,还是我必须将其存储为字符串?

谢谢。

编辑:示例:双精度设置为 52.000 用户单击应用程序中的一个按钮,附加 带有 1 的 52.000。新号码:52.0001 那些曾经微不足道的小数,现在有了意义 因为如果 52.000 中的零更早被拿走 这个数字是 52.1。这是一个完全不同的 来自 52.0001 的号码。因此,为什么零在这方面很重要 情况。

你不能,因为 double 不存储无关紧要的数字。

您的选择:

  • 如果您只需要打印零,请使用适当的格式
  • 切换到保留零的 decimal(小心构建它 - Decimal data type is stripping trailing zero's when they are needed to display)。
  • 将值保留为字符串以供显示,并在需要进行计算时转换为数字类型。基于编辑,这是您在构建计算器时正在寻找的选项 - 事实上,文本输入应保留为文本,直到用户最终决定输入完成。

如果您使用 decimal 并且不想转换 to/from 字符串,您可能会发现这个有用:

public static int Scale(this Decimal d) => (Decimal.GetBits(d)[3] >>16) & 31;