我正在使用两个不同的变量来计算与来自int和的变量double.当我使用类似的东西时,这些工作正常:
int cost
cost = 40;
cost = (cost / 400) * 20 * 2;
Run Code Online (Sandbox Code Playgroud)
为此,该方法工作正常,我得到了正确的结果4,但是当我使用变量cost并将其放在标题中时,如:
#define cost 40
int total_cost;
total_cost = (cost / 400) * 20 * 2;
Run Code Online (Sandbox Code Playgroud)
这总是导致0我,我不知道为什么.即使我用printf用%d还是%f这仍然给我的结果0.
你正在做整数除法 - 它向下舍入.
因此:
cost / 400
Run Code Online (Sandbox Code Playgroud)
返回零,因为cost = 40并向下40 / 400舍入为零.
你应该做的是使用浮点类型double.
编辑:
double cost
cost = 40;
cost = (cost / 400) * 20 * 2;
Run Code Online (Sandbox Code Playgroud)
和
#define cost 40
double total_cost;
total_cost = ((double)cost / 400) * 20 * 2;
Run Code Online (Sandbox Code Playgroud)