【发布时间】:2014-05-21 17:43:18
【问题描述】:
我想将以下 3 个双精度值转换为字符串。
Double value converted string value
1 1
1.200 1.200
1.666 1.666
我希望我的输出字符串值与双精度格式相同。表示上述值 1 没有任何十进制值,因此它将保持不变。如果是 1.200,它将给我字符串 1.200 和 1.666 相同。但是我尝试了 .ToString() 方法,但它截断了 1.200 值的零值。但我不想要这个。我想要字符串格式的实际值。
【问题讨论】:
-
我认为您不需要“实际”值(即 1.2000000000001)
-
“我希望我的输出字符串值与双精度格式相同” - 您的意思是要区分 1.20 和 1.200 的原始字符串输入吗?如果是这样,
double是错误的类型。如果这不是你的意思,你真的需要努力让你的问题变得清晰。我们不知道数据来自哪里,或者您所说的“与双精度格式相同”是什么意思。 -
如果你想控制双精度的输出,使用格式化。例如
string.Format("{0:0.000}", myDouble)方法将格式化一个双精度数,使其在小数点左侧至少有一个符号,在小数点右侧至少有 3 位。如果你想在变量声明中输出准确的值,并在double v1 = 1;和double v2 = 1.000;之间做出区别,那么double不是你的数据类型——语言在1和1.000之间没有区别,除非两者都是字符串。 -
嗨@JonSkeet,我的意思是我不想截断小数位后的零值。实际上这些值来自数据库。所以我希望这些值在字符串转换后保持不变(相同的小数位)。
-
C# 不区分 1.2 和 1.200 和 1.20000 如果它存储为双精度类型。如果您创建 3 个双变量并将这些值分配给它们并将它们打印出来或对彼此执行比较测试,它们都是相等的,您会看到这一点。因此,在使用双精度类型时,尾随零并不是真正的值的一部分,您只能使用专门的格式打印它们。 (编辑:Ivaylo 基本上说了同样的话,在发表评论之前我没有注意到它。哎呀)
标签: c# typeconverter