首页 文章
  • 220 votes
     answers
     views

    Double vs. BigDecimal?

    我必须计算一些浮点变量,我的同事建议我使用 BigDecimal 而不是 double ,因为它会更精确 . 但我想知道它是什么以及如何充分利用 BigDecimal ?
  • 5 votes
     answers
     views

    BigDecimal在1.8对1.9

    当升级到ruby 1.9时,我在比较 BigDecimal 的预期值与实际值时进行了测试失败,这是划分Float的结果 . expected: '0.495E0',9(18) got: '0.4950000000 0000005E0',18(27) 谷歌搜索“bigdecimal ruby precision”和“bigdecimal changes ruby 1.9”之类的东西并没有...
  • 0 votes
     answers
     views

    为什么1除以1.1在我的代码中使用BigDecimal?'t work, even when I' m?

    我正在尝试用4种基本操作来做计算器 . 我开始使用双打来从edittext获取参数,但我发现了problem with decimal values . 为了避免这种情况,我使用了BigDecimal,但现在应用程序在某些特定数字上失败,为1 /(1.1) . 我注意到只有除法功能正在破坏应用程序,添加,子和乘法工作正常 . 我真的很感激这方面的一些帮助 . 这是代码的一部分: div.setOn...
  • 3 votes
     answers
     views

    BigDecimal for money和BigDecimal之间的百分比差异

    我在整个应用程序中使用 BigDecimal 来处理 money 和 percentages . 但是,我需要一种方法来区分两者之间的使用(为了呈现它们,即在_1146287中) . 所以,我最初的想法是编写两个类似于 BigDecimal 的类,以便我可以对它们进行 instanceof 测试 . 所以我写了这段代码: DollarValue.java: import java.math.Bi...
  • 0 votes
     answers
     views

    BigDecimal除以小数位数不均匀

    我正在尝试使用必要的多个BigDecimal计算工作的程序 . 我处于一个令人困惑的地步,因为BigDecimal没有合作我想要的 . 让我解释一下我需要它做什么: 首先,它需要一个货币金额,最多可以有两位小数 . 然后它需要“分配”,这基本上是多少帐户将分配金额 . 该程序现在应该在帐户之间划分金额 . 当然,在某些情况下,金额不能平均分配,例如$ 3.33除以2个账户 . 在这种情况下,您必须...
  • 2 votes
     answers
     views

    如何处理Java的BigDecimal中的舍入错误

    我正在使用在java应用程序中实现脚本引擎的开源项目(axil),并且在尝试利用BigDecimal的舍入时遇到了一个主要障碍 . 似乎BigDecimal正在将我的输入转换为科学记数法,然后将我传入的精度应用于数字的SN表示系数,而不是其非SN表示 . 例如: new BigDecimal("-232454.5324").round(new MathContext(2, Ro...
  • 0 votes
     answers
     views

    如何解决这个舍入要求?

    我有以下要求来舍入金额: 1.2448 -> 1.25 3.349 -> 3.35 0.474 -> 0.47 我已经尝试了BigDecimal的所有可能模式 . setScale(2,RoundingMode . )方法,没有任何成功 . 结果如下: UP: 1.25, 3.35, 0.48 HALF_UP: 1.24, 3.35, 0.47 ...
  • 1 votes
     answers
     views

    当我四舍五入时,为什么我会得到一个非终止的十进制扩展?

    好的,所以我试图划分2个随机BigDecimal值 . 如果数字不均匀或不规则而不是得到余数,我宁愿将它四舍五入到最接近的整数 . 但是,当我这样做时,我的网站崩溃,我得到以下错误 . 引起:java.lang.ArithmeticException:非终止十进制扩展;没有确切的可表示的小数结果 . 如果我没有将数字四舍五入,我会理解这种情况,但因为我,我不明白为什么会发生这种情况 . BigDe...
  • 1 votes
     answers
     views

    BigDecimal HALF_UP舍入问题

    我试图使用scale = 3和HALF_UP舍入模式舍入0.14049,并希望看到舍入值= 0.141但是得到0.140 . 根据我的理解,最后的十进制数字9应该向上舍入4到5,当使用比例3时,它应该反过来向上舍入0到1,我应该看到0.141 . 这是BigDecimal setScale方法中的错误还是我对Rounding的期望是错误的 . 如何获得类似于0.141而不是0.140的舍入值? B...
  • 0 votes
     answers
     views

    Apache Spark DecimalType使用向上舍入的BigDecimal setScale

    我有一个输入表,我正在尝试读取一行,其中我感兴趣的列值是0.070070073108537356(总共20位,小数点后18位) 我将读取首选项设置为使用Spark DecimalType(precision = 38, scale = 18) 读取,这是表示 java.math.BigDecimal 值的数据类型 . 当我读到这个值时,我最终获得了0.070070073108537360,它的等...
  • -3 votes
     answers
     views

    BigDecimal divide方法要么返回0还是ArithmeticException?

    当我尝试使用该方法划分BigDecimals时: divide(divisor, RoundingMode.HALF_UP) 它返回0 但如果我这样做没有这样的舍入模式: divide(divisor) 我得到一个ArithmeticException 我不在乎这个数字是不是精确的十进制表示 . 如何在不获得0或异常的情况下划分BigDecimals?
  • -2 votes
     answers
     views

    如何在Talend Java中将带小数的String转换为BigDecimal并保留小数?

    我正在Talend中创建一个Job,使用来自数据库的一些数据转换来自.csv文件的数据,然后合并到另一个.csv文件中 . 在转换期间,需要对值执行一些计算: value1 / value2 * value3 Value1取自.csv文件,默认情况下是表示金额f.e的String . “15.25” 值2和3取自数据库,是BigDecimals,带有4个小数位 . 计算结果必须四舍五入到小...
  • 29 votes
     answers
     views

    在BigDecimal.divide期间抛出ArithmeticException

    我认为java.math.BigDecimal应该是The Answer™,需要用十进制数执行无限精度算术 . 请考虑以下代码段: import java.math.BigDecimal; //... final BigDecimal one = BigDecimal.ONE; final BigDecimal three = BigDecimal.valueOf(3); final BigDe...
  • 434 votes
     answers
     views

    ArithmeticException:“非终止十进制扩展;没有确切的可表示的小数结果“

    为什么以下代码会引发下面显示的异常? BigDecimal a = new BigDecimal("1.6"); BigDecimal b = new BigDecimal("9.2"); a.divide(b) // results in the following exception. java.lang.ArithmeticException:...
  • 5 votes
     answers
     views

    BigDecimal精确爆炸

    我使用BigDecimals和Scala的默认MathContext,它具有精度34.即使所有输入都具有这种精度,我发现经过一些计算后,结果的精度开始爆炸 . 这是一个示例计算,我认为说明了问题: import math.BigDecimal val z40 = BigDecimal(0).setScale(40) // 0E-40 z40.scale ...
  • 1 votes
     answers
     views

    Mathcontext需要加,减和乘? [重复]

    这个问题在这里已有答案: Use of java.math.MathContext 5个答案 首先,我的搜索技能可能不如我所希望的那么好,所以也许这种问题已经存在 . 如果是这样请告诉我.. 请参阅以下代码: new BigDecimal("5").add(new BigDecimal("7")); VS new BigDecimal("5&...
  • -1 votes
     answers
     views

    数学运算的意外结果

    在执行数学运算以开发用于简单计算器的Android应用程序时,导致减法和除法运算的奇怪结果 . 其他操作与提供的输入相得益彰 . 在我的精确处理研究中,遇到了BigDecimal类,减少了我的错误 . 某些操作,如减法和除法,都没有产生适当的结果 . 我在这里提供代码片段 . . . . String answer = ""; BigDecimal bigDecimal1, b...
  • 0 votes
     answers
     views

    如果精度值小于刻度,则填充零

    如果我除以1.0f / 2.0f,则值为0.5 . 我希望精度值为5(0.50000) . 使用BigDecimal将比例设置为5但仍然将值打印为0.5 BigDecimal val = new BigDecimal(1.0f / 2.0f); BigDecimal tt = val.setScale(5);的System.out.println(tt.doubleValue); 如何设置比例...
  • 4 votes
     answers
     views

    BigDecimal:使用setScale进行舍入的HALF_UP

    我们有以下代码: BigDecimal net = price .divide(taxCumulative, RoundingMode.HALF_UP) .setScale(2, BigDecimal.ROUND_UP); 我们是单元测试这个并得到不同的结果取决于我们是否在测试类上使用 @Transactional . 我只是想知道我们是否应该期望 HALF_UP 的应用与 setScale ...
  • 176 votes
     answers
     views

    如何将DecimalFormat的小数分隔符从逗号更改为点/点?

    我有一个小的疯狂方法,将BigDecimal值转换为漂亮可读的字符串 . private String formatBigDecimal(BigDecimal bd){ DecimalFormat df = new DecimalFormat(); df.setMinimumFractionDigits(3); df.setMaximumFractionDigits(3);...
  • 6 votes
     answers
     views

    可选和同时铸造

    如果不是 null ,我有一个 BigDecimal 量我想要转换为 Long 但是我得到了 java.lang.NullPointerException 异常: BigDecimal bgAmount = getAmount(); long totalSupplyFilterMin = Optional.ofNullable(bgAmount.longValue(...
  • 109 votes
     answers
     views

    安全字符串到BigDecimal转换

    我正在尝试从字符串中读取一些BigDecimal值 . 假设我有这个字符串:“1,000,000,000.999999999999999”,我希望得到一个BigDecimal . 这样做的方法是什么? 首先,我不喜欢使用字符串替换的解决方案(替换逗号等) . 我认为应该有一些整洁的格式化程序为我做这项工作 . 我找到了一个DecimalFormatter类,但是因为它运行的时间很长 - 大量的精度...
  • -3 votes
     answers
     views

    如何在JasperReports报告组中汇总BigDecimal Field? [重复]

    这个问题在这里已有答案: How to sum all values in a column in Jaspersoft iReport Designer? 2个答案 我需要在JasperReports报告的页脚中做一个高精度的总和 . 通常,如果你有一个Double字段,你可以在页脚组中拖放字段,然后会显示一个弹出窗口,显示你是什么类型的计算,例如总和 . 但是如果你有一个BigDecima...
  • 2 votes
     answers
     views

    使用MongoDB中的Spring Data MongoDB对存储为BigDecimal类型的数值进行排序

    我正在使用教程(https://spring.io/guides/tutorials/data/2/)学习Spring Data MongoDB . 在本教程中,成本类型为BigDecimal,如下所示,它在MongoDB中存储为"string" . 所以,当我试图通过成本字段按升序排序得到排序结果时,我得到了错误的结果 . 我发现使用BigDecimal类是计算的最佳方法 ....
  • 131 votes
     answers
     views

    BigDecimal等于()与compareTo()

    考虑简单的测试类: import java.math.BigDecimal; /** * @author The Elite Gentleman * */ public class Main { /** * @param args */ public static void main(String[] args) { // TODO A...
  • 4 votes
     answers
     views

    使用百分比和BigDecimal进行测试

    我有两个BigDecimals Actual和Budgeted . 我将实际按预算划分为百分比 . 我遇到的问题是,当我构建一些单元测试时,我试图确认生成的BigDecimal是.1但是当尝试等于(new BigDecimal(.1))时,由于双精度问题而失败 . 我想要克服这个问题的方法是创建两个BigDecimals - 十个和一个,将这两个分开并用它来测试 . 这样,我只使用定点数,我的计...
  • 4 votes
     answers
     views

    java中的BigDecimal位操作

    BigDecimal是否支持位操作?如果是的话,有人可以指出一个很好的教程吗? 如果不是,将BigDecimal变量除以2的幂的最佳方法是什么?
  • 0 votes
     answers
     views

    使用BigDecimal值舍入aftrer除法的问题 . Java的

    我对BigDecimal实例的划分结果有疑问 . 我的节目: 公共类DecimalPrecision public static void main(String[] args) { MathContext mathContext = new MathContext(25, RoundingMode.HALF_UP); System.out.println(new BigDeci...
  • 0 votes
     answers
     views

    执行涉及非终止BigDecimals的算法

    划分BigDecimal时,结果可能是非终止的 . 因此,您必须提供MathContext或RoundingMode / scale作为除法运算的一部分 . 但是,根据算术运算的顺序,精度的损失会导致差异 . 使用BigDecimals时,如何避免由于精度损失导致的差异(例如下面显示的示例)?很想知道别人如何处理这类问题 . Example: BigDecimal v1 = new BigDeci...
  • 73 votes
     answers
     views

    最好的跨平台(便携式)任意精度数学库[关闭]

    我在C或C中寻找一个好的任意精度数学库 . 你能给我一些意见/建议吗? 主要要求: It MUST 处理任意大整数(我的主要兴趣是整数) . 如果你不知道这个词是什么意思大,意味着像100000这样的东西! (阶乘为100000) . 在库初始化/对象创建期间指定精度 MUST NOT NEED . 精度应该受到系统可用资源的限制 . It SHOULD 利用平台的全部功能,并且...

热门问题