为什么在C++算术函数中加".0"会给出小数点的答案?

Why does adding ".0" in C++ arithmetic functions give out the answer in decimal points?

本文关键字:小数点 答案 为什么 C++ 函数      更新时间:2023-10-16
#include <iostream>
int main()
{   
//Returns Seven divided by three is 2
std::cout << "Seven divided by three is " <<  7/3  << std::endl;
//Return Seven divided by three is 2.33333
std::cout << "Seven divided by three is " <<  7.0/3  << std::endl; 
std::cout << "Seven divided by three is " <<  7.0/3.0  << std::endl;
}

即使我没有在代码中放置浮点数或双精度变量,将.0添加到数字末尾如何返回十进制答案?

C++是一种强类型语言。这意味着每个对象,甚至是右值常量,都有一个类型。77.0的类型不同。您可以在一个简单的示例中看到这一点:

std::cout << typeid(7).name() << "n";
std::cout << typeid(7.0).name() << "n";

指纹:

i
d

对于integerdouble.

您的分部操作在7.0/3的单一情况下导致双重打印的原因是因为整体升级的规则。在这种情况下,3提升为双精度型,结果值为双精度型。

常量 7 和 3 是整数,而常量 7.0 和 3.0 是双精度浮点数。

当您将两个整数相除时,结果是一个整数。

将两个浮点数或一个浮点数和一个整数相除时,结果是一个浮点数,每个浮点数的精度最高。

因为它使操作数类型为double,从而导致整个表达式为类型double

当您将.0字符序列附加到曾经是整数文本的内容时,它不再是整数。它现在表示类型为double的浮点文本,它是类型为double的表达式中的操作数之一,因此运算符<<选择double重载(第五个(并相应地输出结果。

表达:

7 / 3

属于int类型,因为两个操作数都属于int类型。

表达方式:

7.0 / 3

属于类型double,因为至少有一个操作数属于double类型。

表达:

7.0 / 3.0

也是double型。