Java中浮点除法的严重数字损坏?

Java中浮点除法的严重数字损坏?,java,floating-point,division,Java,Floating Point,Division,我一直在尝试用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)); Ou

我一直在尝试用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,并且我不会结束整数运算。

尝试使用以下方法:

int CLOCK = 1789773;
float fclock = (float) (CLOCK/(Math.pow(10,6)));
System.out.printf("\n%.2f", fclock);

int CLOCK=1789773;
System.out.printf("\n%.2f",(float) (CLOCK/Math.pow(10,6)));

试着用数学。pow(10,6),对我来说很好。

10^6
不是一百万。它是12,因为
^
是按位异或运算符,而不是幂运算


使用
1e6f
,或仅使用
1000000f

作为参考:
^
是按位异或运算器,属于。
int CLOCK=1789773;
System.out.printf("\n%.2f",(float) (CLOCK/Math.pow(10,6)));