將像「129.70」這樣的字符串轉換爲整數(在本例中爲12970)時出現了一些問題。這是我寫的函數:將字符串轉換爲整數和精度損失
public static int valToInt(string v)
{
int tmp = (int)(double.Parse(v, new System.Globalization.CultureInfo("en-US")) * 1000);
return tmp/10;
}
我做了* 1000,然後/ 10招解決這樣的問題,和它的作品的時代以及99%,但129.70似乎是一個臨界值,並轉換爲12969. 有沒有辦法做轉換沒有任何損失?作爲金錢的價值,將不會超過兩位小數位...
使用十進制。它也有Parse()方法,不會失去精度。 – Stefan 2011-04-15 12:38:58
無論何時處理貨幣值,都使用'decimal'而不是'double' - 它在後臺存儲爲10位數字,因此從二進制表示轉換時不會有任何損失。 – 2011-04-15 12:40:26
decimal.Parse(「129.70」)= 12970,沒關係。 decimal.Parse(「5」)= 5 ...雖然這不是很好:) – kaharas 2011-04-15 12:46:56