floating-point - 如何将分数转换为 float ?

标签 floating-point computer-science

假设我有 0.128 或 0.008。分数无法用二进制定点表示,所以我不知道如何找出尾数以便将其转换为浮点。

假设我有 int 100,浮点二进制字符串将是: 01000010110010000000000000000000。 我想对 0.128 做同样的事情,但我不知道如何舍入分数,因为我需要这个作为尾数。

最佳答案

要将十进制数的小数部分转换为二进制,您可以将小数部分连续乘以 2。每个乘积将在整数部分产生 0 或 1,这将是二进制表示形式的每个数字(在从左到右排列)。

您可以继续相乘,直到小数部分为 0,或者直到获得所需的位数(然后截断或舍入)。

请注意,只有作为 2 的负幂之和的小数才会有精确的表示。您会发现具有几位数字的十进制数以 2 为基数是周期性的。

从您的示例中,0.008 的二进制表示形式将以 0.00000010 开头...

0.008 x 2 = 0.016  First fractional digit is 0
0.016 x 2 = 0.032
0.032 x 2 = 0.064
0.064 x 2 = 0.128
0.128 x 2 = 0.256
0.256 x 2 = 0.512
0.512 x 2 = 1.024  First one
0.024 x 2 = 0.048
...

请注意,以 2 为基数乘以 2 相当于向左移动,或者将点向右移动一位数,从而将第一个小数位移至整数部分。

关于floating-point - 如何将分数转换为 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22205607/

相关文章:

objective-c - 如何在 Objective-C 中创建随机 float ?

cloud - 虚拟化环境中的时间依赖性是什么?

c++ - 似乎至少有两种方法可以进行回溯,这种特定的回溯方法是如何工作的?

C++:从一串 float 中获取单个浮点值

java - Java 中更高精度的 double 函数和三角函数

C 编译器错误(浮点运算)?

java - Java 寻宝程序

perl - Perl 中最小的非零正 float 是多少?

binary - 什么是 “two' 的补码”?

java - 介绍性计算机科学作业