#include <stdio.h>
void main ()
{
int inum = 11;
double dnum = 2.56;
double dec_result;
int int_result;
dec_result = inum / 4 + (3.0 * inum) / 5;
printf("value in dec_result is %.2f\n", dec_result);
dec_result = (double) inum / 4 + (3 * inum) / 5;
printf("value in dec_result is %.2f\n", dec_result);
int_result = (int) dnum * 10 + 1;
printf("value in int_result is %d\n", int_result);
int_result = (int) (dnum * 10 + 1);
printf("value in int_result is %d\n", int_result);
}
当我通过Visual Basic运行它时,我知道结果。我很难理解的是它是如何实现的。
我的工作方式:inum
和dnum
我认为是“值的名称”,可以与例如x或y互换使用。与int_result
和dec_result
相同。
第一个dec_result是8.60
dec_result = inum / 4 + (3.0 * inum) / 5;
11 (an integer) / 4 + (3.0 * 11) / 5
11 (an integer) / 4 + (33.0) / 5
第二个dec_result是8.75
dec_result = (double) inum / 4 + ( 3 * inum) / 5;
= as double is a cast operator you change inum from int to double, so therefore:
= (double) inum / 4 + (33) / 5;
Then = inum/4 becomes 2.75 + 33/5
为什么33/5位变成了6位?它显示为占位符指定的小数位数和数据类型double指定的小数位数。
int_result = (int) dnum * 10 + 1;
= cast operator alters dnum a double to integer so 2.56 becomes 2
= 2 * 10 + 1
= 20 + 1
= 21
应该是括号前指定的整数,而%d
占位符也表示以数字形式提供值,不带小数点。
int_result = (int) (dnum * 10 + 1);
我的逻辑正确吗?
C编译器只有在两个操作数都是整数(整数/整数、整数+整数等)时才会做整数算术,否则会做浮点算术(双倍/整数、双倍+整数等)
第一个结果:
11 (an integer) / 4 + (33.0) / 5
第一部分(11/4)用整数算术计算,所以答案是2,第二部分(33.0/5)用浮点算术计算,所以答案是6.6,和是8.6
(double) inum / 4 + (33) / 5;
“(double)inum/4”是使用浮点算术计算的,因此答案是2.75。“33/5”是用整数算术计算的,所以答案是6,和是8.75
在以下方面:
int_result = (int) dnum * 10 + 1;
变量dnum首先转换为整数,因此使用整数算术:2*10+1==21
int_result = (int) (dnum * 10 + 1);
我如何解释以下内容: 打印2.29999 打印2.3
问题内容: 来自http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#FAQ103: 具有下限的通配符看起来像“?super Type”,代表所有类型的族,它们是Type的超类型,包括Type类型。类型称为下限。 所以为什么 编译? Double不是Number的超类型,而是Number的子类… 编辑1:
问题内容: 我进行了一个junit测试,使用以下命令声明了两个Double对象: 很好,然后我决定将其更改为使用原始double,除非您也提供了增量,否则该结果被弃用了。 所以我想知道在assertEquals中使用Double对象还是原始类型有什么区别?为什么不使用不带增量的对象,但不推荐使用不带增量的基元呢?Java是否在后台执行了已经考虑了默认增量值的操作? 谢谢。 问题答案: 没有断言方法
描述 (Description) C库函数double modf(double x, double *integer)返回小数部分(小数点后的部分),并将整数设置为整数分量。 声明 (Declaration) 以下是modf()函数的声明。 double modf(double x, double *integer) 参数 (Parameters) x - 这是浮点值。 integer -
描述 (Description) C库函数double fmod(double x, double y)返回x的余数除以y 。 声明 (Declaration) 以下是fmod()函数的声明。 double fmod(double x, double y) 参数 (Parameters) x - 这是具有除法分子iex的浮点值 y - 这是具有除法分母iey的浮点值 返回值 (Return Va
描述 (Description) C库函数double pow(double x, double y)将x提升为y的幂,即x y 。 声明 (Declaration) 以下是pow()函数的声明。 double pow(double x, double y) 参数 (Parameters) x - 这是浮点基值。 y - 这是浮点功率值。 返回值 (Return Value) 此函数返回将x提升