visual studio2005.net编辑GUI计算器一点小问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 05:40:15
编辑GUI计算器.....
使用函数来实现,,进行2,8,16and 10之间互换换算.....
2->10,10->2,
8->10,10->8,
16->10,10->16,
visual studio2005.net 的 code
高手指点..(- -)(_ _)(- -)!!thanks
c++ 的

下面的方法适用于任意进制

对于正整数n,想用K进制的方式来输出,就可以循环这样:

最低位的数字 = n % K;
n /= K;
次低位的数字 = n % K;
n /= K;
第三低位的数字 = n % K;
n /= K;
………………
………………
直到n变成0为止

得到了各个数位的数字。每个数字都是一个小整数,用你喜欢的方式输出吧。
对于负数,要先去掉负号当正数,按照上面的方法处理,然后加上“-”符号即可

想得到小数部分的话,要把小数和整数分开来做。对于一个正的浮点数x,首先把它的整数部分按照上面的方法输出,然后减去整数部分,得到其小数部分u,这个小数部分是0~1的一个数。
如果想得到K进制下的小数,要循环这样:

u *= K;
小数的最高位 = (int)u;
u -= 小数的最高位;

u *= K;
小数的次高位 = (int)u;
u -= 小数的次高位;

………………………………
…………………………………
各个数位也都是一些小整数。

直到小数等于0。很有可能小数是循环小数,无法正好减到0,那么就得到你想要的精度,也就是限制一下循环次数即可。

负数的小数么,首先把浮点数乘以-1,各个数位都算好以后,再在前面加一个“-”号即可。