C++ 带有double的变量工作不正常
所以伙计们,我有一个家庭作业要做,但事实并非如此,我对C++ 带有double的变量工作不正常,c++,C++,所以伙计们,我有一个家庭作业要做,但事实并非如此,我对双变量有一个问题,因为它的计算没有浮点点,就像整数 我在计算之前试过写(double),但没用 #包括 #包括 #包括 使用名称空间std; int main(){ 系统(“chcp 1257”); 系统(“颜色8F”); 对于(int a=0;a 免责声明:我不是计算机科学家,因此我无法准确解释数字在计算机中的表示方式或“浮点运算”是如何完成的。然而,我从早期就认识到你的概念问题 首先考虑python 2的一个示例: usr@cmptr
双
变量
有一个问题,因为它的计算没有浮点
点,就像整数
我在计算之前试过写(double
),但没用
#包括
#包括
#包括
使用名称空间std;
int main(){
系统(“chcp 1257”);
系统(“颜色8F”);
对于(int a=0;a
免责声明:我不是计算机科学家,因此我无法准确解释数字在计算机中的表示方式或“浮点运算”是如何完成的。然而,我从早期就认识到你的概念问题
- 首先考虑python 2的一个示例:
usr@cmptr $ python2
>>> 1/2
0
这显然是不对的
- 那蟒蛇3呢
usr@cmptr python3
>>> 1/2
0.5
- 嗯,R怎么样
usr@cmptr $ R
> 1/2
[1] 0.5
- 好的……还有倍频程/matlab
usr@cmptr $ octave --no-gui
octave:1> 1/2
ans = 0.50000
这是怎么回事
- 如果有疑问,请返回源代码,即FORTRAN:
! File name: "main.f90"
program min
x = 1/2
y = 1.0/2
print *, x, y
end program main
编译并运行:
usr@cmptr $ gfortran main.f90 -o main
usr@cmptr $ ./main
0.00000000 0.500000000
usr@cmptr $ gcc main.c -o main
usr@cmptr $ ./main
0, 0.500000, 0.500000, 0.500000, 0.500000, 0
现在的结论是,我们处理整数除法和十进制数除法的方式明显不同
- 为了说明如何使用好的旧C
// file name: main.c
#include <stdio.h>
int main()
{
int i_a, i_b; // <-- Integer versions of "a" and "b"
i_a = 1; i_b = 2;
double d_a, d_b; // <-- Decimal versions of "a" and "b"
d_a = 1; d_b = 2;
printf( // Print to screen
"%d, %f, %f, %f, %f, %d\n",
i_a/i_b, // <-- regular integer division
d_a/d_b, // <-- regular floating point division
(double)i_a/i_b, // <-- cast "i_a" to a decimal number
i_a/(double)i_b, // <-- cast "i_b" to a decimal number
1.0/2, // <-- define 1.0 as a decimal number
1/2 // <-- regular integer division
);
return 0;
}
似乎我们至少需要一个数字作为十进制数,或“浮点数”,才能达到预期的结果。原因是整数的除法处理方式与十进制数不同
我希望这能有所帮助。8+(18-a)/2
只涉及int
s,因此只使用整数运算,包括除法。您不需要图像来共享预期和实际输出。任何使用屏幕阅读器的人现在都无法读取这些图像。任何阻止imgur链接的人也将无法看到它们。如果imgur被DDoS攻击,任何人都将无法看到它们在这段时间内使用它们。将它们粘贴为文本片段是很有礼貌的。8+(18.0-a)/2;
就可以了。原因(以及这个成语)对于专业程序员来说非常清楚,但是(请原谅我的光顾),你可能想添加一条支持性评论。哇,感谢我的帖子只过了几秒钟,我的问题已经解决了solved@Bathsheba我的FGITW一片空白。我的坏。手机很难移动。