c++浮点数进制转换和整数取反小算法。

方法:乘R取整法

十进制小数转换为R进制数时,可以连续的乘以R,直到小数部分变成0,每次相乘得到的结果的整数部分取出来就组成了R进制的数字。

例如:0.3125转换为二进制的数字

 0.3125*2=0.625     //取整数部分 0,并取小数部分0.625参加下一次运算

0.625*2=1.25        //取整数部分 1,并取小数部分0.25参加下一次运算

0.25*2=0.5          //取整数部分 0,并取小数部分0.5参加下一次运算

0.5*2=1.0        //取整数部分 1,小数部分为0,结束运算

所有转换的最终结果就是:0.0101

代码实现: 

int main() {
	double b;
	cout << "请输入一个十进制浮点数" << endl;
	cin >> b;
	int a;
	cout << "请输入想转换的进制数" << endl;
	cin >> a;
	int c[MAX];
	int d,i=0;
	double temp;
	memset(c ,0, sizeof(c));
	do {
		d = b;//取整数部分
		c[i] = d; i++;
	 temp = b-d;//取小数部分
	 b = temp * a;//小数部分乘进制
	} while (temp!= 0);
	cout << "0.";
	for (int j = 1; j < i; j++) {
		cout << c[j];
	}
       return 0;
}

二.整数取反

问题:想要把123456789取反该如何操作?

long  opposit(long num) {
	long n = num;
	long m=0;
	while (n != 0) {
		m = m * 10 + n % 10;
		n /= 10;
	}
	return m;
}
int main() {
	 long d=opposit(123456789) ;
      cout<<d<<endl;
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ad_m1n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值