C# 停止自动不重要的双精度小数截断

C# 停止自动不重要的双精度小数截断,c#,formatting,double,number-formatting,C#,Formatting,Double,Number Formatting,我有一个double,我想按原样存储,不需要以下任何格式: 例1:双a=12。 将格式设置为:12 例2:双b=50.0 将格式设置为:50 例3:double c=88.0000000000 将格式设置为:88 这是可能的,还是我必须将其存储为字符串 多谢各位 编辑:示例:Double设置为52.000 用户单击应用程序中附加的按钮 52.000,带一个1。新号码:52.0001 那些曾经微不足道的小数现在有了意义 因为如果52000的零在那之前被拿走了 这个数字是52.1。这是完全不同的 从

我有一个double,我想按原样存储,不需要以下任何格式:

例1:
双a=12。
将格式设置为:
12

例2:
双b=50.0
将格式设置为:
50

例3:
double c=88.0000000000
将格式设置为:
88

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

多谢各位

编辑:示例:Double设置为52.000 用户单击应用程序中附加的按钮 52.000,带一个1。新号码:52.0001 那些曾经微不足道的小数现在有了意义 因为如果52000的零在那之前被拿走了 这个数字是52.1。这是完全不同的 从52.0001开始。因此,为什么在这种情况下零是重要的
情况。

您不能因为
double
不存储无关紧要的数字

您的选择:

  • 如果只需要打印零,请使用适当的格式
  • 切换到保留零的
    decimal
    (小心这样构造)
  • 将值保留为字符串以供显示,并在需要进行计算时转换为数字类型。基于编辑,这是您在构建计算器时正在寻找的选项-事实上,文本输入应该保持为文本,直到用户最终确定输入已完成

如果您使用
十进制
并且不想转换为字符串或从字符串转换,您可能会发现以下内容很有用:

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

始终以双精度存储,在需要格式化时按您所需的方式进行格式化。除非你想说这些数字永远不需要或不应该有小数点(即它们是整数)?我希望这些数字保留小数点,以便我的应用程序可以在以后正确地将它们追加到后面。好的,那么你的双精度是格式化的,而你不想格式化吗?@Halp:“我希望这些数字保留小数点”这些值没有小数位。
double c中的值=88.0000000000
双d=88中的值完全相同-它们是按位等效的。按您希望的方式保留0用于计算没有任何价值。您可以指定为什么要保留格式吗?