问题描述
我一直在尝试用Java浮点除法做一些简单的事情,读过几篇关于值的最小变化的文章,但与我下面的内容完全不同。
这是预期的结果:
float f = 1789773f / 1000000f;
System.out.printf("\n%.2f",f);
Outputs: 1,79
当我使用变量时会发生以下情况:
int CLOCK=1789773;
System.out.printf("\n%.2f",(float)CLOCK/(10^6));
Outputs: 13410,48
这是怎么回事?我必须使用文字'1000000f'而不是10 ^ 6才能使其正常工作。另外,我认为使用(float)转换除法元素之一会将所有内容都设置为float,而我不会结束整数运算。
解决方法
10^6
不是一百万。现在是12,因为^
是按位xor运算符,而不是幂运算。
使用1e6f
或仅使用1000000f
。
尝试改用它:
int CLOCK = 1789773;
float fclock = (float) (CLOCK/(Math.pow(10,6)));
System.out.printf("\n%.2f",fclock);
,
float CLOCK=1789773f;
System.out.printf("\n%.2f",CLOCK/Math.pow(10,6));
OR
int CLOCK=1789773;
System.out.printf("\n%.2f",(float) (CLOCK/Math.pow(10,6)));
尝试使用 Math.pow(10,6)
,对我来说很好。