初学者C 教科书不同意我在编译数学方程式时获得的实际输出

beginner c++ textbook disagrees with actual output I get when compiling math equations

本文关键字:输出 方程式 不同意 教科书 编译 初学者      更新时间:2023-10-16

嗨,所以以下问题是我本周的HW问题,我根据我在教科书中发现的材料回答了它们D将它们通过编译器运行,看看我的答案是否正确。但是,当我在C 编译器中运行它们时,我无法获得POW,CEIL或地板功能以返回浮点,它们只会返回整数不同意我的书所说的应该返回的内容?我展示了我对HW的答案应根据这本书的内容,在括号中是我编译时会发生什么。

问题;我的书 说 回答 应该;(编译器显示的内容);

a)POW(2,3);8.0;(我的书说POW只返回浮动
要点,但这只能返回整数,
即使我将功能更改为 POW(2.0,3.0)我只得到8);

b)Fabs(-3.5);3.5;(这是有效的,它返回3.5);

c)SQRT(POW(3,2));2.8;(返回2.82843,我应该如何
知道要弹出多少个小数?);

d)7/abs(-2);3;(这是一个可行的);

e)ceil(5.8);6.0;(仅返回整数6);

f)地板(5.8);5.0;(仅返回整数5);

根据您所描述的内容,一切都按预期工作。您尚未包含您编写的代码,因此这有点猜测 - 但是您要求计算机打印出某些数字的值。您正在获得8,但您期望8.0。您和计算机都没有错。您只需要要求计算机打印小数点值,即使您要打印的数字正是整数。

问题;我的书说答案应该是什么;(编译器显示的内容);

编译器没有显示有关类型的任何内容。(嗯,它可以,但是您必须深入。

大概您正在基于您的印刷内容。例如,考虑此C 11程序:

#include <cmath>
#include <iostream>
int main () {
   auto pow_2_3 = std::pow(2,3);
   // int eight {pow_2_3};  // Compilation error.
   std::cout << pow_2_3 << 'n';
}

此打印" 8"(不是8.0)。这是否意味着类型是整数?当然不是。" 8"只是意味着默认格式正在剥离后零,也是小数点。

如果您输入注释输出线路,则会遇到汇编错误,因为双重无法缩小到整数。即使是确切的,也不是在编译时已知的。如标准所指定的那样,pow_2_3的类型是双重的。如果std::pow(2,3)实际上是与编译器的计算机上的整数,那么您有一个不合格的编译器。

std::ceilstd::floor也是如此。他们返回双打,而不是整数。