我是靠谱客的博主 怡然发箍,这篇文章主要介绍java实现十进制小数转换二进制代码测试,现在分享给大家,希望可以做个参考。

整数和小数分别转换.
整数除以2,商继续除以2,得到0为止,将余数逆序排列.

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
22 / 2 11 余 0 11 / 2 5 余 1 5 / 2 2 余 1 2 / 2 1 余 0 1 / 2 0 余 1

所以22的二进制是10110
小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列.

复制代码
1
2
3
4
5
6
7
8
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
十进制22.8125等于二进制10110.1101


代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public static String decimal2Binary(double value) throws Exception { // 整数部分的值 int in = (int) value; System.out.println("The integer is: " + in); // 小数部分的值 double r = value - in; System.out.println("The decimal number is: " + r); StringBuilder stringBuilder = new StringBuilder(); // 将整数部分转化为二进制 int remainder = 0; int quotient = 0; while (in != 0) { // 得商 quotient = in / 2; // 得余数 remainder = in % 2; stringBuilder.append(remainder); in = quotient; } stringBuilder.reverse(); stringBuilder.append("."); // 将小数部分转化为二进制 int count = 32; // 限制小数部分位数最多为32位,如果超过32为则抛出异常 double num = 0; while (r > 0.0000000001) { count--; if (count == 0) { throw new Exception("Cannot change the decimal number to binary!"); } num = r * 2; if (num >= 1) { stringBuilder.append(1); r = num - 1; } else { stringBuilder.append(0); r = num; } } return stringBuilder.toString(); }

测试

复制代码
1
2
3
4
5
6
7
8
9
public static void main(String[] args) { try { String s = decimal2Binary(22.8125); System.out.println("The result is: " + s); } catch (Exception e) { e.printStackTrace(); } }

输出

复制代码
1
2
3
The integer is: 22 The decimal number is: 0.8125 The result is: 10110.1101

最后

以上就是怡然发箍最近收集整理的关于java实现十进制小数转换二进制代码测试的全部内容,更多相关java实现十进制小数转换二进制代码测试内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部