如何解决无法从Java代码中的浮点计算中获取确切的值
基本上,我正在更改布局比例。我必须将当前布局比例更改为其他比例。我在应用程序中使用了一个代码段。
import java.util.*;
public class Big{
public static void main(String args[]){
float b=(new Scanner(System.in)).nextFloat();
float a=(b*((float)225/440));
//Another layout ratio height
System.out.println(a);
//Back to previous layout height
float c=(a*((float)440/225));
System.out.println(c);
}
}
下面是一些输入及其受尊重的输出:
在输入值-50,60.0,65和69.9999上,代码分别返回相同的输出50,65和69.9999。 但是,当我尝试输入70和80时,Code分别返回的近似值分别为69.99999和79.99999。 问题是-在70和80的情况下,为什么我得到的这些近似值不是精确值。 可能还有其他情况。我试图在所有情况下都获得确切的值。
解决方法
使用BigDecimal进行精确的计算,尽管要小心,因为它真的很慢。
正如上面的评论所述,浮点型数学设计并非完全正确:无法表示可以在实数集中创建的数字的无穷大
BigDecimal用于此类计算。但是它以精确度为代价。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。