java浮点除法中的重数损坏?

i86rm4rw  于 2021-07-08  发布在  Java
关注(0)|答案(3)|浏览(223)

这个问题在这里已经有答案了

为什么我的输出在java[duplicate]中的指数是错误的(1个答案)
^运算符在java中做什么(18个答案)
5个月前关门了。
我一直在尝试用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,并且我不会结束整数运算。

xpszyzbs

xpszyzbs1#

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) ,对我来说很好。

ckx4rj1h

ckx4rj1h2#

尝试改用此选项:

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

p3rjfoxz3#

10^6 不是一百万。12点,因为 ^ 是按位异或运算符,而不是指数运算。
使用 1e6f ,或者只是 1000000f .

相关问题