为什么我的双精度小数点会丢失?C++

为什么我的双精度小数点会丢失?C++,c++,C++,在if语句中放入double后,double将丢失小数点。如果我第一次输入1.0000001,第二次输入1。为什么呢 #include <iostream> using std::cin; using std::cout; using std::endl; int main() { double first = -1; double second = -2; cin >> first >> second; // 1.0000001

在if语句中放入double后,double将丢失小数点。如果我第一次输入1.0000001,第二次输入1。为什么呢

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    double first = -1;
    double second = -2;

    cin >> first >> second; // 1.0000001 >> 1

    if(first - second > 0 )
        cout << first << endl << second;
}

你的双精度不会丢失小数点。你可能会问,为什么你的初始化工作时,你没有提供任何小数位在第一位

cout根据数字的值选择要显示的小数位数。在这种情况下,显示小数点没有意义,因为它们都是零

如果要显示小数位,请使用:


请发布准确的输入、预期输出和实际输出。您必须更加具体。哪一个是我的替身,还是两者都是?你说失去小数点是什么意思?失去什么?对不起,我说得不够清楚。我的意思是,当我输入一个数字,比如第一个1.0000001,第二个1。当我试图在if语句中显示first和second时,为什么在我输入1.0000001时,它只显示first 1?@dstone:我已经告诉过你:流根据其最佳判断选择精度。使用I/O操纵器覆盖它。你看过我给你链接的信息了吗?你试过我的建议了吗?同时,这些新信息与你的问题完全不相似。那我们再试一次好吗?啊,对不起,哈哈。没有注意到这是一个链接。谢谢这是新的。
#include <iostream>

int main()
{
    double first = -1;
    double second = -2;

    std::cin >> first >> second;
    std::cout << std::fixed;
    if(first - second > 0 )
        std::cout << first << std::endl << second;
}

// -1.000000
// -2.000000