浮点数和双精度之间的区别
Dfference between float and double
第一个代码
double pi=3.14159,a=100.64;
cin>>a;
double sum=(a*a)*pi;
cout <<fixed<<setprecision(4)<<"Value is="<<sum<<endl;
return 0;
值为 =31819.3103 第二个代码
float pi=3.14159,a=100.64;
float sum=(a*a)*pi;
cout <<fixed<<setprecision(4)<<"Value="<<sum<<endl;
return 0;
值为 =31819.3105 为什么两个值之间的差异?
在float
和double
(以及c++
中可用的所有其他浮点类型)中,值都以浮点形式表示:为了存储x = m * 2^p
,m
和p
的值被写入内存。
显然,并非所有实数都可以以这种形式表示(特别是考虑到m
和p
的最大长度是有限的)。所有不能以这种形式表示的数字都四舍五入到最近的一个相邻数字。由于 3.14159 和 100.64 在二进制系统中都是无限分数,所以它们都是四舍五入的,当你写a = 3.14159
时,a
确实有点不同。
随后,对舍入值进行某些表达式计算的结果并不精确,如果我们使用不同的舍入模式,则可能会有所不同,这就是您看到结果的原因。
使用double
获得的值可能更精确,因为大多数体系结构和编译器double
使用更多的尾数数字。要获得更高的精度,请考虑使用long double
。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 这 4 个 lambda 表达式之间有什么区别?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- (double) 和 double() 之间的区别
- & 和 * 之间的区别
- std::is_convertible 和 std::convertible_to 之间的区别(在实践中)?
- 析构函数和'delete'之间的区别
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- vector.back() 和 vector[vector.size() - 1] 之间的区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- OpenMP #pragma omp for v/s #pragma omp parallel for 之间的区别?
- S() 与 S{} 之间的区别?