簡體   English   中英

c#將String轉換為雙精度損失

[英]c# Convert String to double loss of precision

我有以下內容:

string value = "9223372036854775807";
double parsedVal = double.Parse(value, CultureInfo.InvariantCulture);

...結果是9.2233720368547758E+18 ,這不是完全相同的數字。 如何在不損失精度的情況下將字符串轉換為double?

double只能保證16(大約)十進制數字的精度。 你可能會嘗試切換到decimal (它還有幾個位可以使用,並保持該值具有足夠的余量)。

由於定義了雙(( IEEE 754 )二進制浮點運算標准),因此無法將9223372036854775807轉換為double精度而不會丟失精度。

默認情況下,Double值包含15個十進制數字的精度,但內部最多保留17位數。

使用Decimal可以獲得您需要的精度。 但請注意,Decimal的存儲范圍不會與double相同。

請參閱Can C#存儲比雙精度數據更精確的數據?

暫無
暫無

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

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