我試圖將一串長度的數字轉換爲一個double,以便將其用作redis數據庫的索引(redis需要雙精度型),但轉換不是正確,以便數據庫抓取變得混亂。c#中的Convert.ToDouble在訪問redis數據庫時沒有給出正確答案
這裏是一個字符串轉換成一個雙
string start="636375529204974172";
ulong istart = Convert.ToUInt64(start); // result 636375529204974172
double dstart = Convert.ToDouble(istart); // result 6.3637552920497421E+17
,你可以看到,當我ISTART轉換爲雙象DSTART,一些最顯著位被搞砸的問題開始的代碼,似乎通過在那裏引入E + 17的轉換。
我不明白爲什麼,它的一個整數,沒有小數部分來創建錯誤,爲什麼它不能做到這一點?
有誰知道如何解決從字符串轉換爲雙?
我也這麼認爲,但同時我只是用E + 17所以它應該工作的右雙去E + 308 ? –
嘗試使用「十進制」更精確 – edtheprogrammerguy
爲什麼十進制更精確的雙精度? – jdweng