小编Liz*_*son的帖子

如何使用BigDecimal增加for循环?

所以在编码时我或多或少都是一个菜鸟.我正在学习java的大学课程,我的一个练习要求我编写一个代码,使用左端点方法,中点方法和梯形方法来评估积分.

为此,我需要使用一个for循环,每次增加一步.我知道如何使用double来做到这一点,但问题是,当我使用double数据类型运行计算时,它会给我舍入错误.在阅读之后(主要是查看其他堆栈溢出问题),我想我应该使用BigDecimal来消除舍入错误.

但是使用BigDecimal会给我一大堆错误.据我所知,我不能使用常规运算符,如<,>,==等,因为BigDecimal不是原始数据类型.但后来我不知道如何做一个基本的for循环,在仍然使用BigDecimal的同时递增.我在这里看到的另一件事建议使用Commons-math?(第二个答案)

/sf/ask/1169517821/# =

我没有最简单的想法如何使用它,据我所知,它与普通的旧的import java.lang.Math不同.

所以我想我的问题是,如何让我的代码在for循环中使用BigDecimal工作,并且通常将数字进行比较,或者我如何使用Common-Math简单地避免舍入错误?

这是我的代码:

import java.util.Scanner;
import java.lang.Math;
import java.math.BigDecimal;

public class IntegrationMethods{

  //calculates the value of the function f(x)=x^2
  public static BigDecimal f(BigDecimal x){
    return x.multiply(x);
  }

  //uses a, b and N as arguments, calculates sum of integral using left 
endpoint rule
  public static BigDecimal leftEndpoint(BigDecimal a, BigDecimal b, 
BigDecimal n){
    BigDecimal h = (b.subtract(a)).divide(n);
    sum = new BigDecimal("0");
    i = new BigDecimal("0");
    for(i.compareTo(n)<=0;){
      sum = sum.add(h.multiply(f(a.add(h.multiply(i-1)))));
      i = i.add(new BigDecimal(1));
    }
    return sum; …
Run Code Online (Sandbox Code Playgroud)

java bigdecimal

1
推荐指数
1
解决办法
2068
查看次数

标签 统计

bigdecimal ×1

java ×1