为什么这种类型是双精度而不是浮点数
Why is that type double instead of float?
问题:在家庭作业问题中(用笔在纸上完成,因此无需编码(,我必须确定在C++中执行的加法的类型和值。
1 + 0.5
我的回答是:
- 类型浮点(因为我认为
integer + float = float
( - 值 1.5(据我所知,当添加两种不同的数据类型时,添加的结果将转换为不会丢失任何信息的数据类型。
解决方案 说:
- 类型:双
- 值:1.5
我的问题:为什么 0.5 是双精度而不是浮点数?我如何在浮子和双浮子之间徘徊?我的意思是,0.5 在我看来就像一个浮点数和一个双精度。
首先,是的。 integer
+ float
= float
.你对这部分是正确的。
问题不在于此,而在于您假设0.5
是float
。不是。在C++中,浮点数文本后跟一个 f,表示0.5f
是浮点数。然而,0.5
实际上是一个double
。这意味着您的等式现在是:
integer + double = double
如您所见,此结果是双精度。这就是为什么您的问题的正确答案是结果类型是双精度
。顺便说一句,为了清除记录,从技术上讲,这里发生的事情并不integer + double = double
.正在发生的事情是,1
正在受到隐式转换的影响。本质上,1
被转换为double
,因为操作的另一端也是double
。这样,计算机将添加相同的类型,而不是不同的类型。这意味着这里发生的实际添加更像是:
double + double = double
在C++中,默认情况下double
没有类型后缀的浮点文本。如果要float
,则需要指定f
后缀,例如 0.5f
。
相关文章:
- 在C++中序列化浮点数/双精度,编译为 WebAssembly
- 如何提高计算浮点数的精度?
- 我们如何清楚地知道 C/C++ 中的双精度或浮点数的精度?
- 这是为浮点数/双精度函数泛型的正确方法吗?
- 关于在C/C++中比较整数和浮点/双精度
- 如何在没有浮点数/双精度数的情况下生成均匀和高斯分布的伪随机数
- 具有 IEEE 754 浮点双精度数据类型的安全往返整数值
- 将浮点浮点/双精度的其余部分转换为整数
- 为什么在C和C++中没有浮点/双精度的除法余数运算
- 使用浮点/双精度作为循环变量
- 字符数据浮点数/双精度数
- 宏或函数,用于根据给定的符号、尾数和指数构造浮点(双精度)
- C++将SATOSHI(uint64_t)转换为不带浮点/双精度的BTC(string)
- C++将字符串转换为浮点/双精度,而不会丢失数据
- 将输入字符串转换为浮点/双精度C++
- 在运行时定义双精度或浮点数的精度/大小
- 整数和分数为浮点数/双精度
- 在c++中控制浮点数的精度
- c++中浮点数/双精度数的比较
- 以 32 个十进制数字分析浮点数/双精度