C++ 为什么输出显示0而不是0.0?

C++ 为什么输出显示0而不是0.0?,c++,arrays,types,C++,Arrays,Types,我声明了一个包含10个元素的数组,并用0.0初始化它。。9.9,它的输出是完美的,只是0.0变成了0,为什么呢 #include <iostream> using namespace std; int main(void) { int const SIZE = 10; double number[SIZE] = {0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9}; for(int i(0) ; i < SIZE ; i++) {

我声明了一个包含10个元素的数组,并用0.0初始化它。。9.9,它的输出是完美的,只是0.0变成了0,为什么呢

#include <iostream>
using namespace std;
int main(void)
{
int const SIZE = 10;
double number[SIZE] = {0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9};
for(int i(0) ; i < SIZE ; i++)
{
        cout << number[i] << endl ;
}
system("PAUSE");
}
#包括
使用名称空间std;
内部主(空)
{
int const SIZE=10;
双数[大小]={0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9};
for(int i(0);icout“0.0”和“0”是同一数字的两个数字。
double
只存储数字1;不存储原始数字

当C++程序的源代码包含一个数字,如<代码> 0 < /COD>或<代码> 1.1 > />代码,编译器将它从该数字(这是一个字符串)转换过来。到
double
double
格式只表示数字,而不表示它们来自的字符串。因此,
double
中的零只是零;它不是“0”或“0.0”或“0.000”。打印它时,打印
double
的软件无法知道原始数字是“0”还是“0”“0.0”。它只是根据打印
double
的规则进行打印


默认情况下,零的
双精度
值打印为“0”。如果希望以不同的方式打印,可以使用I/O操纵器要求以不同的格式打印。例如,在
#include
之后,可以使用
std::cout“0.0”和“0”是同一个数字的两个数字。
double
只存储数字1;不存储原始数字

当C++程序的源代码包含一个数字,如<代码> 0 < /COD>或<代码> 1.1 > />代码,编译器将它从该数字(这是一个字符串)转换过来。到
double
double
格式只表示数字,而不表示它们来自的字符串。因此,
double
中的零只是零;它不是“0”或“0.0”或“0.000”。打印它时,打印
double
的软件无法知道原始数字是“0”还是“0”“0.0”。它只是根据打印
double
的规则进行打印


默认情况下,零的
double
值打印为“0”。如果希望以不同的方式打印,可以使用I/O操纵器要求以不同的格式打印。例如,在
#include
之后,如果确实需要输出0.0而不是0,可以使用
std::cout,查看
#include
如果确实需要输出0.0而不是0,请查看
#includede

std::cout
默认情况下最多输出6位数字,在本例中为1(零),因为不需要小数。
std::cout
std::cout
默认情况下最多输出6位数字,在本例中为1(零)因为不需要小数。
std::cout在大多数情况下,标准格式将使用尽可能紧凑的表示形式。由于二进制浮点数是标准化的,因此它们不表示任何尾随数字。如果您希望有一个额外的小数位置,您可能需要使用以下标志:

std::cout << std::fixed << std::setprecision(1);

std::cout在大多数情况下,标准格式将使用尽可能紧凑的表示形式。由于二进制浮点数是标准化的,因此它们不表示任何尾随数字。如果您希望有额外的小数位置,可能需要使用以下标志:

std::cout << std::fixed << std::setprecision(1);

std::cout这就是默认情况下
cout
的工作方式。要更改这一点,您可以:

  • 使用
    precision()
    方法:

    cout.precision(1);
    for(int i(0) ; i < SIZE ; i++)
    {
        cout << number[i] << endl ;
    }
    

  • 这就是默认情况下
    cout
    的工作方式。要更改这一点,您可以:

  • 使用
    precision()
    方法:

    cout.precision(1);
    for(int i(0) ; i < SIZE ; i++)
    {
        cout << number[i] << endl ;
    }
    

  • cout
    或另一个流中插入
    double
    的默认值是不显示数字所需的数字。默认值是C的
    %g
    格式,它使用六位数字,但删除尾随零(四舍五入到六位后)。该SetPerVision函数有助于处理1.1到9.9的输出,但问题仍然是0仍然是零,即使我将第0个元素初始化为0.0!!@ArsalaKamal确保您也使用
    fixed
    setprecision
    设置最大位数舍入,
    fixed
    使其始终显示小数位数。请仔细阅读我的答案,并检查末尾的参考I链接。我已确认我端的输出显示
    0.0
    cout
    或其他流中插入
    double
    的默认值是显示数字所需的位数。默认值为C%g
    格式,使用六位数,但删除尾随零(四舍五入到六位数后)。该SetPerVision函数有助于处理1.1到9.9的输出,但问题仍然是0仍然是零,即使我将第0个元素初始化为0.0!!@ArsalaKamal确保您也使用
    fixed
    setprecision
    设置最大位数舍入,
    fixed
    使其始终显示小数位数。请仔细阅读我的答案,并检查结尾处的参考链接。我已确认我端的输出显示
    0.0
    ,setpervision函数有助于操纵1.1到9.9的输出,但问题仍然存在0,即使我将第0个元素初始化为0.0!!确实存在将double初始化为0或0.0或0.00等没有区别。为了使用
    setprecision
    ,您必须将
    #include
    与其他
    include
    语句一起使用。否则,使用
    cout.precision
    ,如Remy所示。该setpervision函数有助于处理1.1到9的输出。9但问题仍然存在0仍然是零,即使我将第0个元素初始化为0.0!!第0个
    #include <iomanip>
    
    cout << setprecision(1) << fixed;
    for(int i(0) ; i < SIZE ; i++)
    {
        cout << number[i] << endl ;
    }