0LEARNER1 2016-11-27 11:56 采纳率: 25%
浏览 2994
已采纳

java中如何从double类型转为二进制数

固定精度的double类型数如何转为24位二进制数 。

  • 写回答

1条回答 默认 最新

  • wenwuxiaojia 2016-11-27 12:34
    关注

    /** * 十进制数转二进制数 * @param d 十进制数 * @return 十进制数转换成二进制的字符串 / public String decimal2BinaryStr(double d){ String result = decimal2BinaryStr_Inte(d); result += decimal2BinaryStr_Deci(d); return result; } /* * 十进制整数部分转二进制数 * @param d 十进制数 * @return 十进制整数部分转换成二进制的字符串 / public String decimal2BinaryStr_Inte(double d){ // return Integer.toBinaryString((int)d); / * 本来利用上面的Integer.toBinaryString(int)就可以得到整数部分的二进制结果, * 但为了展示十进制转二进制的算法,现选择以下程序来进行转换 / String result = ""; long inte = (long)d; int index = 0; while(true){ result += inte%2; inte = inte/2; index++; if(index%4 == 0){ result+=" "; } if(inte==0){ while(index%4!=0){ result+="0"; index++; } break; } } char[] c = result.toCharArray(); char[] cc = new char[c.length]; for(int i=c.length; i>0; i--){ cc[cc.length-i] = c[i-1]; } return new String(cc); } /* * 十进制小数部分转二进制 * @param d 十进制数 * @return 十进制小数部分转换成二进制小数的字符串 / public String decimal2BinaryStr_Deci(double d){ return decimal2BinaryStr_Deci(d, 0); } /* * 十进制小数部分转二进制 * @param d 十进制数 * @param scale 小数部分精确的位数 * @return 十进制小数部分转换成二进制小数的字符串 */ public String decimal2BinaryStr_Deci(double d, int scale){ double deci = sub(d,(long)d); if(deci==0){ return ""; } //为了防止程序因所转换的数据转换后的结果是一个无限循环的二进制小数,因此给其一个默认的精确度 if(scale==0){ scale = (String.valueOf(deci).length()-2)*4; } int index = 0; StringBuilder inteStr = new StringBuilder(); double tempD = 0.d; while(true){ if(deci==0 || index==scale){ while(index%4!=0){ inteStr.append("0"); index++; } break; } if(index==0){ inteStr.append("."); } tempD = deci*2; inteStr.append((int)tempD); deci = sub(tempD ,(int)tempD); index++; if(index%4 == 0){ inteStr.append(" "); } } return inteStr.toString(); }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)