Dot-Net
為什麼 ToString() 舍入我的雙精度值?
轉換為字元串時如何防止我的雙精度值被舍入?我都試過了
Convert.ToString,ToString()結果是一樣的。例如,我的 double 可能看起來像
77.987654321,並且兩個字元串轉換轉換為77.98765。我需要保持值的精度不變。
預設情況下,該
.ToString()方法Double返回 15 位精度。如果您想要 double 值在內部保存的完整 17 位數字,則需要將“G17”格式說明符傳遞給該方法。String s = value.ToString("G17");來自MSDN 文件:
預設情況下,返回值僅包含 15 位精度,儘管內部維護最多 17 位。如果此實例的值大於 15 位,則 ToString 返回 PositiveInfinitySymbol 或 NegativeInfinitySymbol 而不是預期的數字。如果您需要更高的精度,請使用“G17”格式規範指定格式,它始終返回 17 位精度,或“R”,如果數字可以用該精度表示,則返回 15 位數字,如果數字只能表示,則返回 17 位數字以最高精度表示。