簡體   English   中英

C#:字符串到ulong轉換保持精度

[英]c# : string to ulong conversion keeping precision

在c#中將字符串轉換/解析為ulong並保持精度的最佳方法是什么?
無法直接轉換,並且Convert類實用程序不提供超長轉換,
所以我使用了一個中間的十進制變量,但是卻失去了精度。

decimal d  = Decimal.Parse("1.0316584"));
Console.Write(d) // displays 1.0316584
ulong u = (ulong)d;
Console.Write(u) // displays 1 , precision is lost

我首先嘗試使用一個長解析器,但被拋出:

long l  = Int64.Parse("1.0316584")); // throws System.FormatException

編輯:
好的,不好意思,我的問題很不好。 在C#中,“ long”確實是整數。我被其他先前使用的語言所迷惑。 另外,我必須使用ulong,因為這是我正在使用的第三方代碼的內容,因此答案中建議的乘數確實是解決方法

ulong是整數類型,對於小數/十進制值永遠不會有任何精度。

字符串可以存儲的數據多於字符串。 如果轉換為長整數,則會冒無法將其轉換回的風險。

例如,如果我有字符串,那么Now is the time for all good men to come to the aid of their party. 那真的不能轉換成很長的時間。 “精度”將丟失。

話雖如此,A long是一個64位整數。 除非您願意以某種方式更改“編碼”,否則它無法存儲此類數據。 如果您的代碼如下所示:

decimal d  = Decimal.Parse("1.0316584"));
Console.Write(d) // displays 1.0316584
ulong u = (ulong)(d * 1000000000m);
Console.Write(u / 1000000000m) // displays 1.0316584? Precision is not lost.

暫無
暫無

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

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