如何解决Java的浮点除法是否严重损坏?
我一直在尝试用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)
,对我来说很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。