我有一个双倍值如下
double propertyValue = 1994.7755474452554;
当我将此双精度值转换为字符串时
string value = propertyValue.ToString();
它给出了值"1994.77554744526"
它已经将最后的数字2554
四舍五入到26
。
但我不想围绕价值。分享您的想法。
默认情况下,Double的.ToString()方法返回15位精度。如果您想要内部保存double值的完整17位数,则需要将“G17”格式说明符传递给方法。
String s = value.ToString("G17");
这将防止转换为字符串时舍入double值。
value = propertyValue.ToString("G17");
您可以使用十进制类型。
decimal propertyValue = 1994.7755474452554M;
我无法重现这种不端行为;你经历过一种表现形式的影响:它的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
您可以将"R"
投射到https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx#RFormatString并使用默认的double
,如下所示:
decimal