float double 存储问题
超gogo 2009-06-09 10:14:50 我在窗口输入一个float数,或者double数,然后想得到其小数
程序大致如下:
double m;
cin>>m;
int k=(int)m;//得到浮点数的整数部分
double a=m-k;
int f=((int)(a*10))%10 这个得到小数点后的第一位
但是得到的结果总是小一点,真的是一点点
例如:输入3.3 我通过调试查看,保存入m中的值不是3.3 而是3.2999999999999998
但是如果用cout语句输出m则为3.3,在程序中的应用都是错误的值,都是对上面3.299999999999999998的运算
我需要在程序中应用m值,但是应用的值却不正确。
请各位朋友帮忙解惑,同时也可以提出得到各个小数位的值的方法 谢谢