用二进制表示0-1之间的实数
package _1_Bit_Operation; /** * @Auther: YuanJun * @Date: 2021/12/14 - 12 - 14 - 16:50 * @Description: _1_Bit_Operation */ //给定一个区间0-1之间的实数,(如0.625),类型为double //打印它的二进制表示 0.101 //如果无法精准的用32位以内的二进制表示,则打印“ERROR” import java.util.Scanner; /** * 0.625 * 第一: 先 0.625*2 = 1.25 > 1 (如果 x * 2 > 1 ,那么得到一位二进制数1, 否则为0,直到 x' * 2 = 1 ,得到最后一位二进制数,否则不能表示) * 得到第一位二进制数 0.1 * 然后1.25 - 1 = 0.25 * 0.25*2 = 0.5 < 1 * 得到第二位二进制数 0.10 * 然后0.5*2 = 1 = 1 * 得到第三位二进制数 0.101 * 1-1 = 0 ,结束 */ public class test9 { //这是一个main方法,是程序的入口: public static void main(String[] args) { Scanner input = new Scanner(System.in) ; System.out.println("请输入0-1之间的小数:"); double a = input.nextDouble(); double b = a; StringBuffer str = new StringBuffer("0."); while(a != 0) { if ((a * 2) >= 1) { str.append("1"); a = a * 2 - 1; } else{ a = a*2; str.append("0"); } } if(str.length() >34){ System.out.println("ERROR:"+ b +"不能用二进制精确表示"); } else{ System.out.println(str); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)