C++ 浮动类型另存为exp

C++ 浮动类型另存为exp,c++,double,decimal,rounding,C++,Double,Decimal,Rounding,我做了一些计算,结果是 0.000137*0.000137=0.000000018769 我把答案保存在float y中 但它似乎被保存为1.88788682e-008 我希望将其保存为0.000000018769 我试了一下打字,但得到了同样的答案 int main() { float y= 0.000137*0.000137; return 0; } 调试时,y显示在手表中,显示为0.000137*0.000137它总是以相等的形式保存,并且这些数字是相等的 如果您是使用cout打印

我做了一些计算,结果是 0.000137*0.000137=0.000000018769

我把答案保存在float y中

但它似乎被保存为1.88788682e-008

我希望将其保存为0.000000018769

我试了一下打字,但得到了同样的答案

int main()
{
 float y= 0.000137*0.000137;

return 0;

}

调试时,y显示在手表中,显示为0.000137*0.000137

它总是以相等的形式保存,并且这些数字是相等的

如果您是使用cout打印,请检查此有关cout格式化页面的参考


您实际上无法控制浮点数的存储方式,这与实际情况基本无关。不过,你可以控制它们的打印方式。如果要在不使用科学符号的情况下打印它们,可以使用std::fixed获得:

int main() {
    float y = 0.000137*0.000137;
    std::cout << std::fixed << std::setprecision(12) << y << "\n";
}

你如何保存它以及保存在哪里?显示一些代码。我的意思是float y=0.000137*0.000137@SamiKuhmonenWe不能指出代码中我们看不到的错误。这不是保存。这就是分配一个变量。它本身没有文本表示。无论您使用什么来显示值,都是在进行文本转换。你能告诉我真正的问题是什么吗?不过,首先,不要被科学的符号所拖延。这是您的值输出到屏幕的方式,而不是它的保存方式。但值得关注的是,这些值实际上是不同的。1.887886282e-8以何种方式等同于0.0000000 18769?哦,对不起,我只是将指数表示法视为差异,这可能是浮点极限错误,当然,因为你的常数是双倍的,然后它们被铸造成浮点数,所以浮点数对于五个有效数字有足够的精度。
0.000000018769