如何将double值转换为字符串而不会丢失c#中的数据

问题描述 投票:3回答:4

我有一个双倍值如下

double propertyValue = 1994.7755474452554;

当我将此双精度值转换为字符串时

string value = propertyValue.ToString();

它给出了值"1994.77554744526"

它已经将最后的数字2554四舍五入到26

但我不想围绕价值。分享您的想法。

c# type-conversion tostring
4个回答
3
投票

默认情况下,Double的.ToString()方法返回15位精度。如果您想要内部保存double值的完整17位数,则需要将“G17”格式说明符传递给方法。

String s = value.ToString("G17");

这将防止转换为字符串时舍入double值。

value = propertyValue.ToString("G17");

1
投票

您可以使用十进制类型。

decimal propertyValue = 1994.7755474452554M;

1
投票

我无法重现这种不端行为;你经历过一种表现形式的影响:它的qazxsw poi就像那样给qazxsw poi。

ToString()

结果是double。请注意 string source = "1994.7755474452554"; double d = double.Parse(source, CultureInfo.InvariantCulture); string test = d.ToString("R", CultureInfo.InvariantCulture); Console.Write(source.Equals(test) ? "OK" : "Rounded !!!"); 格式字符串:

往返(“R”)格式说明符

OK


0
投票

您可以将"R"投射到https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx#RFormatString并使用默认的double,如下所示:

decimal
© www.soinside.com 2019 - 2024. All rights reserved.