使用长双精度 [duplicate] 时输出的预期值错误

Expected value wrong with output with using long double [duplicate]

提问人:MarioM 提问时间:11/10/2021 更新时间:11/10/2021 访问量:115

问:

我正在研究我的 C++ 知识,我期待一个我没有收到的值。这是我的代码

#include <iostream> 
#include <float.h>

using std:: cout;
using std:: endl;
using std:: fixed;

float a = 10.0 / 3;
a = a * 10000000000000000000;
double b = 10.0 / 3;
b = b * 10000000000000000000;
long double c = 10.0 / 3;
c = c * 10000000000000000000;

cout << fixed << a << endl; // I get 33333333268354826240.000000
cout << fixed << b << endl; // I get 33333333333333336240.000000
cout << fixed << c << endl; // I get 33333333333333336240.000000 but this should be more accurate
cout << FLT_DIG << endl; // I am getting 6 
cout << DBL_DIG << endl; // I am getting 15 
cout << LDBL_DIG << endl; // I am getting 15 but this should be 18 

那么我是不是做错了什么?我遵循了tutoiral是如何做到的,但我不知道为什么。因此,如果有帮助,我正在使用Microsoft Visual Studio 2019。

C++ 浮动精度

评论

0赞 NathanOliver 11/10/2021
做。如果是 ,那么 your 的大小与 your 的大小相同,这是完全允许的。cout << sizeof(long double)8long doubledouble
1赞 bolov 11/10/2021
learn.microsoft.com/en-us/cpp/c-language/......“长双型与双型相同。”(请注意,这适用于 ony MSVC)
1赞 chux - Reinstate Monica 11/10/2021
注意,两者都是用相同的商初始化的。如果代码想要一个除法来初始化,请使用bcdouble10.0 / 3long doubleclong double c = 10.0L / 3;
0赞 chux - Reinstate Monica 11/10/2021
MarioM,关于“我得到 15 岁,但这应该是 18 岁”,谁或什么文字建议应该是 18 岁?
0赞 MarioM 11/10/2021
嘿,伙计们,我尝试了 cout << sizeof(长双),所以我和双倍一样。谢谢你的帮助。

答: 暂无答案