前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将十进制小数转化为二进制小数

将十进制小数转化为二进制小数

作者头像
全栈程序员站长
发布2022-11-08 17:38:26
4140
发布2022-11-08 17:38:26
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。 小数表示原理 你了解小数的表示原理吗? 我的十进制小数换成二进制该如何表示? 比如:0.3 的二进制表示为:0.0100110011001….

(小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列。 0.8125×2=1.625 取整1,小数部分是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.8125的二进制是0.1101)

代码语言:javascript
复制
import java.math.BigDecimal;
import java.util.Scanner;

public class H4 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String input = scanner.nextLine();
		BigDecimal num = BigDecimal.valueOf(Double.parseDouble(input));
		String output="";
		trans(num,output);
	}
	public static void trans(BigDecimal num,String output) {
		num = num.multiply(BigDecimal.valueOf(2));
		String tmp = num.toString().substring(0, 1);//取小数点前一位
		output +=tmp;
		num=num.subtract(BigDecimal.valueOf(Double.parseDouble(tmp)));
		if(num.compareTo(BigDecimal.ZERO)==0||output.length()==10) {//如果num=0或者小数点后有10位就停止递归
			System.out.println("0."+output);
			return;
		}
		trans(num,output);
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月24日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档