首页 > 代码库 > 将十进制小数转化为二进制小数
将十进制小数转化为二进制小数
小数表示原理
你了解小数的表示原理吗?
我的十进制小数换成二进制该如何表示?
比如:0.3 的二进制表示为:0.0100110011001....
(小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列。
0.8125x2=1.625 取整1,小数部分是0.625
0.625x2=1.25 取整1,小数部分是0.25
0.25x2=0.5 取整0,小数部分是0.5
0.5x2=1.0 取整1,小数部分是0,结束
你了解小数的表示原理吗?
我的十进制小数换成二进制该如何表示?
比如:0.3 的二进制表示为:0.0100110011001....
(小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列。
0.8125x2=1.625 取整1,小数部分是0.625
0.625x2=1.25 取整1,小数部分是0.25
0.25x2=0.5 取整0,小数部分是0.5
0.5x2=1.0 取整1,小数部分是0,结束
所以0.8125的二进制是0.1101)
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); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。