快捷搜索:  汽车  科技

计算机怎么进行浮点运算?计算机的浮点数学

计算机怎么进行浮点运算?计算机的浮点数学0.3更多语言实现查看查看:https://0.30000000000000004.com/下面是一些.1 .2以各种语言发送到标准输出的示例。#include <stdio.h> int main(int argc char** argv) { printf("%.17f\n" .1 .2); return 0; }C ,输出0.30000000000000004#include <iomanip> #include <iostream> int main() { std::cout << std::setprecision(17) << 0.1 0.2; }go:package main import "fmt" func main() { fmt.Pri

更多互联网精彩资讯、工作效率提升关注【飞鱼在浪屿】(日更新)

计算机怎么进行浮点运算?计算机的浮点数学(1)


计算机本身只能存储整数,因此它们需要某种方式来表示十进制小数。这种表示并不完全准确。这就是为什么 0.1 0.2 != 0.3。


为什么会这样?

这实际上是相当有趣的。当你有一个以 10 进制的系统时,它只能表示使用质因子的分数。10 的质因数是 2 和 5。所以 1/2、1/4、1/5、1/8 和 1/10 都可以清楚地表示,因为分母都使用 10 的质因数。相比之下,1 /3、1/6、1/7 和 1/9 都是重复循环的小数,因为它们的分母使用质数因子 3 或 7。

在二进制(或以 2 为base)中,唯一的质因数是 2,因此只能清楚地表达分母只有 2 作为质因数的分数。在二进制中,1/2、1/4、1/8 都可以清楚地表示为小数,而 1/5 或 1/10 将是重复的小数。所以 0.1 和 0.2(1/10 和 1/5)虽然在以 10 为底的系统中是干净的小数,但在计算机使用的以 2 为底的系统中是重复小数。当对这些重复的小数进行数学运算时,您最终会得到多余的数据,将计算机的 base-2(二进制)数字转换为更易于人类阅读的 base-10 表示时,这些多余的数字会结转。

下面是一些.1 .2以各种语言发送到标准输出的示例。

C: 输出0.30000000000000004

#include <stdio.h> int main(int argc char** argv) { printf("%.17f\n" .1 .2); return 0; }C ,输出0.30000000000000004

#include <iomanip> #include <iostream> int main() { std::cout << std::setprecision(17) << 0.1 0.2; }go:

package main import "fmt" func main() { fmt.Println(.1 .2) var a float64 = .1 var b float64 = .2 fmt.Println(a b) fmt.Printf("%.54f\n" .1 .2) }

输出 0.3 0.30000000000000004 0.29999999999999998889776975374843459576368331java

System.out.println(.1 .2);

System.out.println(.1F .2F);

输出

0.30000000000000004

0.3

更多语言实现查看查看:https://0.30000000000000004.com/

猜您喜欢: