C# 数值精度问题
1)我想让4.56变成456,怎么搞?
我现在的方法是:(其中c是字符串“4.56”,b是字符串“2”)
double num = Convert.ToDouble(c);
int weishu = Convert.ToInt32(b);
num = num * Math.Pow(10, weishu);
发现不行:中断模式下调试发现在进行运算后,num值为455.9999999
怎样才能变成毫无问题的456呢??
2)同理,怎么让456毫无问题的变成4.56(同样刚开始也是只有字符串“4.56”和字符串“2”)
请教各位了
谢谢
[解决办法]
double num = Math.Round(num * 10, 0) //4.56->456
double num = Math.Round(num /100 , 2)//456->4.56
[解决办法]
4.56转换成string,去掉. 再转回数字类型。。。
[解决办法]
方法有很多
C.Replace(".","")试试
[解决办法]
直接乘以100就行。
或者转为字符串,然后去掉小数点,再转为int
[解决办法]
。。。。
vb.net
cint(c*(10^b))
c#.net
Convert.ToInt32(c*(10^b))
试试我忘记C#是不是^了
[解决办法]
用ToDecimal,这个能保证十进制位数准确
[解决办法]
Debug.WriteLine(cal1(4.565)); private int cal1(double num) { return (int)Math.Floor(num * 100); }