如何截取一个小数的第3到5位?
各位大侠:在C/C++里面,如何截取一个小数的小数点后的第3到5位?
如0.123456789, 如何取出345?
谢谢! 是否可以先将小数转换成字符串,然后以字符串的形式进行截取? 0.123456789*100000=12345.6789
取整后为12345,除以10余数即为5
同样方法*10000,1000分别可得到4,3
这样3,4,5就全部获得了
编个函数可以实现
C++程序帮你编好了:
//取小数s的小数点后第n个数字,作为函数值返回;inline表示内联函数,这样速度快些inline int GetOut(double s,int n)
{
for(int i=1;i<=n;i++)
s*=10;
return int(s)%10;
}
[ 本帖最后由 hao1982 于 2007-4-24 20:08 编辑 ] 因为我的算法中要用到十几位,我将double改为float,取x=0.1234567890123456789
用上面的函数,代码和运行结果如图所示,为什么会出错呢?
[ 本帖最后由 xsj3917 于 2007-4-25 09:20 编辑 ] float是单精度,只能提供7位有效数字,所以你上面的程序从第8位开始就不对了
如果你要取到7位以上,那需要把类型设为双精度double型,它能提供15位有效数字
注意,有效数字也包含你小数点前的位数 谢谢hao1982 !
非常感谢!
页:
[1]