发布于 2009-12-11 09:15:56
1楼
你的出发点就是错的,就是实数本质上是不可以转换成BCD数的,所以你的程序无法实现你要求的那种转换。
为什么你的程序里要乘10,乘1000?因为你的输入值是实数,也就是小数后面还有值。所以你现在所做的其实是一种变通的方法,这个方法可以部分实现你的转换要求,但肯定是有局限性的,因为你不知道小数点后面还会有多少位的值,还因为实数的范围要比BCD数大的多,BCD数最大就是9999,如果你要转换的值大于9999那也将得来错误的结果。
If anything can go wrong, it will.