|   |      1 
                                  4
                             你并不像你认为的那样,把“1101.11”读成 用二进制表示的浮点数 。你把它当作 转换为IEEE双精度浮点值的十进制浮点数 和 然后 试图改变基地。 这个中间步骤固有的不精确性是您出现问题的原因。 Vicky建议的一个更好的方法是: 
 | 
|   |      2 
                                  4
                             解决方案以下将按预期工作: 输出: 
   代码(
    解释上述代码的工作原理是首先找到数字中小数点的索引。 
   一旦知道了这一点,它就会从该索引向前和向后遍历字符串,并将适当的值添加到
    
   第一个循环从小数点向后走,如果字符为
    当索引到达字符串的开头时,循环停止。 第二个循环向前走到字符串的末尾,并处理分数部分 as expected 它还使用了与索引的距离,但这次累积了小数部分: 已制定的示例:注意格式错误的输入。“10gsh.99701072.67812”会给你一个结果。意义不大:) | 
|   |      3 
                                  3
                             这段代码的行为异常:我添加了一些简单的print语句 当您输入1101.11时,会显示以下输出: 
   所以你们得到了错误的结果。我测试过
    
   所以我的猜测是,你正在把二进制数读为double,然后试图把这个double转换回二进制。尽管这表明数字的准确性
    | 
|  | Rik Bloemers · for循环不接受任何浮点变量 3 年前 | 
|   | zell · 为什么存储7个浮点数需要34字节? 3 年前 | 
|   | Atharva Sunil Sathe · 如何删除任意数的小数点? 3 年前 | 
|   | user1658887 · 为什么**2!=a*a一些彩车? 7 年前 |