当前位置: 首页 > 知识库问答 >
问题:

如何用BigDecimal正确计算rational

洪永长
2023-03-14
BigDecimal a = new BigDecimal(0.5);
BigDecimal b = new BigDecimal(30);
BigDecimal c = new BigDecimal(18000);

a.divide(b).multiply(c);

谢了!

共有1个答案

祁烈
2023-03-14

您可以在divide方法中使用MathContext参数。

例如,a.divide(b,mathcontext.decimal128).multiply(c);将提供所需的精度(误差幅度1e-32)。如果不想损失任何精度,可以使用MathContext.Unlimited,但这将导致非终止的十进制展开。

具体来说,您还可以尝试重写公式以防止发生舍入:a/b*c=c/b*a

 类似资料:
  • 问题内容: 我的代码示例: 结果是: 我究竟做错了什么? 问题答案: 您尚未为结果指定比例。请尝试这个 2019编辑:已更新JDK 13的答案。因为希望您现在已从JDK 1.5迁移。 请阅读JDK 13 文档。 JDK 1.5的旧答案 : 结果将为0.33。请阅读API

  • 我的代码示例: 结果是:<代码>1/3=0 我做错了什么?

  • 我正在尝试匹配从服务器下载的文件的md5sum。只有当总和匹配时,处理才会继续。 上面的代码并没有每次为某些文件正确提供md5sum。 当我去控制台检查md5sum时 下载文件的vimdiff未提供任何差异。。下载后的文件是正确的。 我无法在上述代码中看到问题。 我正在尝试更改缓冲区大小。但没有运气,所以我猜这不是因为缓冲区大小等。 问候Dheeraj Joshi

  • 晚上好!我是一名律师,我经常要计算被判刑的人多久才能获得福利,比如假释。 它的工作原理如下: 首先,我需要得到一些主要变量,比如那个人开始服刑的那一天(他被捕的那一天)。这将是第一项福利的基准日期。假设有人在2014年11月12日被捕。 我必须做的第二件事是知道每项罪行的判决是什么(有时这个人被判犯有不止一项罪行,对于每项罪行,都有不同的计算方法。假设这个人被判犯有两项罪行: 对于第一项罪行(这是

  • 问题内容: 我正在做一些Java加密,无法找到正确使用PBEWithHmacSHA512AndAES_256算法的方法。 加密似乎可以正常工作,但是我无法正确初始化解密密码。 下面是演示该问题的简短程序。特别是,请参见“问题”注释。 注意:我已经看到了这个非常有用的答案,并且可以使用该方案使事情正常进行,但是我很想知道我在这里做错了什么。 问题答案: // PROBLEM: If I pass “

  • 我试图在递归中总结一个数字的数字,而不是正确的数字。例如,如果输入是1234,那么输出应该是6(1+2+3)。如果输入只有1位数,那么函数应该返回0。 我不知道如何才能同时做到这一点:计算数字,从结果中删除最后一个数字,如果输入是一个数字,那么它也应该返回0。下面的代码汇总了除左位以外的所有数字。如果我尝试使用revNum函数,那么对于数字'100',结果是0而不是1。需要任何帮助请:)