簡體   English   中英

c#中如何在不丟失數據的情況下將double值轉換為字符串

[英]How to convert the double value to string without losing the data in c#

我有一個雙值如下

double propertyValue = 1994.7755474452554;

當我將此雙精度值轉換為字符串時

string value = propertyValue.ToString();

它給出值"1994.77554744526"

它已將最后一位數字2554舍入26

但我不想舍入該值。 分享您的想法。

默認情況下,Double 的 .ToString() 方法返回 15 位精度。 如果您想要 double 值在內部保存的完整 17 位數字,則需要將“G17”格式說明符傳遞給該方法。

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

這將防止在轉換為字符串時四舍五入雙精度值。

value = propertyValue.ToString("G17");

您可以改用十進制類型。

decimal propertyValue = 1994.7755474452554M;

無法重現這種不當行為; 你已經體驗過一種表示效果:它是ToString() puts 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 !!!");

結果還OK 請注意"R"格式字符串:

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

https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx#RFormatString

您可以將doubledecimal並使用默認的ToString()如下所示:

Double propertyValue = 1994.77554744526;
var str = ((decimal)propertyValue).ToString();
//str will hold 1994.77554744526

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM