为什么"double i = 1/12;"屈服于 i = 0?
Why does "double i = 1/12;" yields to i = 0?
我认为标题说明了一切。我想将变量i定义为分数1/12。但是,我是0。
double i = 1/12;
std::cout << i; // Output: 0
或更具体地,我想计算某物的力量:
im_ = std::pow((1 + i), (1/12)) - 1;
但是,编译将(1/12)
评估为0,因此结果是错误的。
简单,因为1/12
被评估为整数数学,而不是浮点数学。
1/12
变为0,因为整数数学未考虑小数分数。
要获得预期的结果,您需要将数字作为浮点字面文字写下来,因此: 1.0/12.0
。
可以在此处找到更多详细信息:为什么我不能从两个int分开的双double
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- c++r值引用应用于函数指针
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 如何仅使用对象名称打印特定于对象的成员
- 相当于LocaleMatcher的ICU4C
- 等<thing>效于char32_t
- 类似于strcat()的函数出现问题
- C++在数学计算中将double转换为int
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- 算术运算的结果类似于:C浮点变量中的1/3
- 在c++中为double类型的数组创建一个unique_ptr
- vector<vector<double>> to mxArray using memcpy
- 相当于 pybind11 中的 boost::p ython py::scope().attr()
- (double) 和 double() 之间的区别
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- 如何将记忆应用于此递归函数?
- 对对应于矩阵的行和列的对向量进行排序
- 为什么"double i = 1/12;"屈服于 i = 0?
- 如何将"double*"传递给类函数,并将该值应用于该类中的另一个"double*"
- 在OpenMP中屈服于其他线程/任务