将像“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