string.format(format,doubleValue),精度丢失
本文关键字:format 精度 doubleValue string | 更新日期: 2023-09-27 18:12:45
我有这个double
值:
var value = 52.30298270000003
,当我把它转换成string
时,它失去了它的精度:
var str = string.Format("{0} some text...", value);
Console.WriteLine(str); // output: 52.3029827
我的double
值的精度的数目可以在运行时更改。如何强制string.Format
方法使用所有精度?
您想使用R
格式说明符
来自MSDN
结果:一个可以往返到相同数字的字符串。
支持:Single, Double, BigInteger
精度说明符:忽略。
更多信息:The Round-trip ("R") Format Specifier.
String.Format("{0:R} some text...", value)
会给你
52.30298270000003 some text...
试试这个:
var value = 52.30298270000003;
var str = string.Format("{0} some text...", value.ToString("R"));
Console.WriteLine(str); // output: 52.3029827
MSDN文档对单打和双打的ToString
方法和使用ToString("R")
有以下说明:
默认情况下,返回值只包含7位精度虽然内部保持最多9位。如果值的值大于7位,ToString(String)返回PositiveInfinitySymbol或NegativeInfinitySymbol代替预期的数量。如果需要更高的精度,请使用"G9"格式规范,它总是返回9位的精度,或"R",如果数字可以,则返回7位数字如果数字只能是,则用该精度或9位数字表示以最高精度表示。