打印0-1之间double数字的二进制表示

思路:依次减去 0.5,0.25,0.125。。。 够减二进制为1,不够减二进制为0。

public class Solution {

    public static String printBinary(double num) {
        if (num >= 1 || num <= 0)
            return "ERROR";

        StringBuilder res = new StringBuilder();
        res.append(‘.‘);
        double frac = 0.5;
        while (num > 0) {
            if (res.length() >= 32)
                return "ERROR";

            if (num >= frac) {
                res.append(1);
                num -= frac;
            } else {
                res.append(0);
            }
            frac /= 2;
        }

        return res.toString();

    }

    public static void main(String[] args) {
        System.out.println(printBinary(0.875));
    }
}
时间: 2024-10-10 05:22:27

打印0-1之间double数字的二进制表示的相关文章

打印0~100之间被3或5整除的数

#include <cstdio> int main() { int i = 0, j = 0; while (i <= 100 && j <= 100) { if (i < j) { printf("(%d) ", i); i += 3; } else if (i > j) { printf("[%d] ", j); j += 5; } else { printf("{%d} ", i); i

java语言将任意一个十进制数数字转换为二进制形式,并输出转换后的结果

1 package com.llh.demo; 2 3 import java.util.Scanner; 4 5 /** 6 * 7 * @author llh 8 * 9 */ 10 public class Test { 11 /* 12 * 将任意一个十进制数数字转换为二进制形式,并输出转换后的结果(使用数组存储) 13 */ 14 public static void main(String[] args) { 15 Scanner sc = new Scanner(System.in

求数组中任意两个数之间所有数字的和

303. Range Sum Query - Immutable   求数组中任意两个数之间所有数字的和 QuestionEditorial Solution My Submissions Total Accepted: 37248 Total Submissions: 146945 Difficulty: Easy Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j),

php在数字前面补0得到固定长度数字的两种方法

比较基础,其实两个内置函数都能实现. 1  sprintf 语法: string sprintf(string format, mixed [args]...); 返回值: 字符串 函数种类: 资料处理 本函数用来将字符串格式化.参数 format 是转换的格式,以百分比符号 % 开始到转换字符为止.而在转换的格式间依序包括了 填空字符.0 的话表示空格填 0:空格是默认值,表示空格就放着. 对齐方式.默认值为向右对齐,负号表向左对齐. 字段宽度.为最小宽度. 精确度.指在小数点后的浮点数位数.

52.从键盘上输入若干学生成绩(成绩在0~100之间),计算平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入

//1.建立一个for循环用于输入数据,设置退出条件 //2.算出平均成绩 #include<iostream> using namespace std; int main() { int Score,sum=0,k=0; int a[100]; float Average; cout<<"please input some students's score:"<<endl; for(int i=0;i<100;i++) { cin>&g

C语言 判断0~3000之间的闰年

熟话说"四年一润,百年不润,四百年再润".那么我们来用编程查找闰年吧! #include<stdio.h> int main() { int year,leap=1;  printf("\t\t\t判断0~3000之间的闰年\n");  printf("请输入0~3000之间的年份\n"); flag:  scanf("%d",&year); //输入年份  if(year>0&&ye

js 数组排序要注意的问题,返回的值最好为 -1, 0, 1之间的值

var test10Elements = [7, 6, 5, 4, 3, 2, 1, 0, 8, 9]; var comparefn = function (x, y) { return x - y; }; test10Elements.sort(comparefn); var comparefn2 = function (x, y) { return x > y; }; test10Elements.sort(comparefn2); http://w3help.org/zh-cn/cause

100万个数据,数据值在0~65535之间,请用尽可能少的内存和最快的速度从小到大排序

场景说明:100万个数据,数据值在0~65535之间,请用尽可能少的内存和最快的速度从小到大排序 voidsort(int* array, int n) { //n的值在100万左右 //你的实现 } 我们首先观察到所有的数据已经保存到了array数组中,现在我们需要做的就是将数组中的元素排序.现在我们把数组中的元素提取出来比如是3,然后我们提取出数组下标是3的元素,保存到临时空间,通过负数来计算个数: void sort(int* array, int n) {     int tmp=0;

设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。

输入描述: 题目没有任何输入. 输出描述: 请输出所有满足题目条件的a.b.c的值. a.b.c之间用空格隔开. 每个输出占一行. temp=[[a,b,c]for a in range(10) for b in range (10) for c in range (10)if a*100+b*10+c+b*100+c*10+c==532]#枚举列表得到需要的值for s in temp: for j in s: print(j,end=' ')#输出 print() 原文地址:https://