簡體   English   中英

從雙精度轉換為字符串,而無需在C#中進行四舍五入

[英]Convert from double to string without rounding in C#

我們遇到了一個問題,就是在使用.toString()方法后將double值四舍五入,以便在TextBox中顯示。

我們需要的是這樣的:

雙值:39621443.8975101998

字符串值:39621443.8975101998

但是我們得到的是:

雙值:39621443.8975101998

字符串值:39621443.8975102

我們已經對其進行了谷歌搜索並嘗試了許多方法,但是沒有一個有效

任何幫助將不勝感激

如果您想要具有那么多小數位數的精確值,則應使用精度更高的Decimal數據類型,然后使用double 使用decimal.Parse(str)

正如@PetSerAl指出的那樣,兩個值(以IEEE 754雙精度浮點數表示 )是相同的。

39621443.8975101998 => 0x4182E49A1F2E19D4

39621443.8975102 => 0x4182E49A1F2E19D4

39621443.897510199800000123456789 => 0x4182E49A1F2E19D4

資料來源: BinaryConvert.net

RoundTrip在這里無濟於事-這是雙精度的極限

您將需要其他數據類型,例如@magnus建議。

暫無
暫無

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

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