中易网

java 小数 转换二进制

答案:1  悬赏:20  
解决时间 2021-01-07 15:31
java 小数 转换二进制
最佳答案
提供思路:
对于 0~1之间的小数,要用二进制表示。以0.725为例,算法如下:
0.725,将其乘以2后得到1。45,取其整数部分1为二进制小数的第一项(十分位),在将小数部分0。45乘2得0。9,取其整数部分为二进制小数的第二位(百分位)0,在将其小数部分0。9乘2,得1。8,取其整数部分为二进制小数的第三位(千分位)1,取其小数部分0。8再乘2……以此类推,直到值为0或形成循环小数则停止。

示例代码:
import java.util.*;
public class Test {
public static void main(String[] args) throws Exception {
Test t = new Test();
Integer[] result = t.toBin(0.725f);
for(int i : result)
System.out.print(i);
}

public Integer[] toBin(float f) {
if (f >= 1 || f <= 0)
return null;
List list = new ArrayList();
Set set = new HashSet();
int MAX = 8; // 最多8位

int bits = 0;
while (true) {
f = calc(f, set, list);
bits++;
if (f == -1 || bits >= MAX)
break;
}

return (Integer[])list.toArray(new Integer[0]);
}

private float calc(float f, Set set, List list) {
if (f == 0 || set.contains(f))
return -1;
float t = f * 2;
if (t >= 1) {
list.add(1);
return t - 1;
} else {
list.add(0);
return t;
}
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
今年我22岁聋人,多少年学会说话呢
ダメ是什么意思
1882年的欧米茄水晶球怀表
八面玲珑和面面俱到的区别 百依百顺和惟命是
日语选修大几能选
为什么自称全国第五大城市,房价却还那么
自从LOL客户端更新了之后,用TGP玩LOL,打完
《最出色的球员》语言有什么特色?
虹桥火车站到上海新锦江大酒店怎么走
习字在前面的词
唐韵:小雨泽什么晚未休.这首诗词的整首是什
四绝日能入宅搬新家吗?
怎么从OUTLOOK服务器上下载已发送邮件
联系两天的相亲男突然不联系了,是什么意思我
孩子老吃手什么原因
推荐资讯
有时候你的不经意一句话会让我很伤心,
妈妈趁我睡觉拿我的钱
台式电脑可以装笔记硬盘安装系统吗?
C语言中*p=&b和int *p,p=&b有什么区别?
谁有拒绝感情四个的图片求分享,做壁纸的那种
back to homepage是什么意思
求雾里微凉此生情全文,免费的
伍豪事件的全文
执剑长老是一种门派职位吗
新车直接上高速有什么影响
那么男士羊毛衫上的:105码、110码,115码分别
什么叫做自怨自哀?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?