相关疑难解决方法(0)

在Java中表示分数的最佳方式?

我正在尝试使用Java中的分数.

我想实现算术函数.为此,我首先要求一种方法来规范化功能.我知道我不能加1/6和1/2,直到我有一个共同点.我将不得不添加1/6和3/6.一个天真的方法会让我添加2/12和6/12,然后减少.如何实现性能损失最小的共同点?什么算法最适合这个?


版本8(感谢hstoerr):

改进包括:

  • equals()方法现在与compareTo()方法一致
final class Fraction extends Number {
    private int numerator;
    private int denominator;

    public Fraction(int numerator, int denominator) {
        if(denominator == 0) {
            throw new IllegalArgumentException("denominator is zero");
        }
        if(denominator < 0) {
            numerator *= -1;
            denominator *= -1;
        }
        this.numerator = numerator;
        this.denominator = denominator;
    }

    public Fraction(int numerator) {
        this.numerator = numerator;
        this.denominator = 1;
    }

    public int getNumerator() {
        return this.numerator;
    }

    public int getDenominator() {
        return this.denominator;
    } …
Run Code Online (Sandbox Code Playgroud)

java math fractions

95
推荐指数
7
解决办法
9万
查看次数

如何在JUnit assertEquals中强制BigDecimal舍入?

每次我运行我的assertEquals时,我的预期BigDecimal都会被舍入,导致它失败.我如何确保它不圆或有另一种方式?

@Test
public void test() {
    BigDecimal amount = BigDecimal.valueOf(1000);
    BigDecimal interestRate = BigDecimal.valueOf(10);
    BigDecimal years = BigDecimal.valueOf(10);
    InterestCalculator ic = new InterestCalculate(amount, interestRate, years);
    BigDecimal expected = BigDecimal.valueOf(1321.507369947139705200000);
    assertEquals(expected, ic.getMonthlyPaymentAmount());
}
Run Code Online (Sandbox Code Playgroud)

java junit bigdecimal

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

Java BigDecimal到String

我有下面的代码,我的精度在转换时迷失BigDecimalString.对此的任何帮助真的很感激.
预期结果:95.10000000000000%
实际结果:95.09999999999999%

public static String getAsString(Object value) 
{
    if (value == null)
        return null;

    if (value.toString().length() == 0)
        return null;

    BigDecimal inputVal = new BigDecimal(value.toString());

    if (inputVal == new BigDecimal(0))
        return "";

    NumberFormat numberFormat = NumberFormat.getPercentInstance(Locale.US);
    numberFormat.setMinimumFractionDigits(14); 
    numberFormat.setMaximumFractionDigits(14);
    if (numberFormat instanceof DecimalFormat) {
        DecimalFormat df = (DecimalFormat) numberFormat;
        df.setNegativePrefix("(");
        df.setNegativeSuffix("%)");
    }

    String num = null;
    num = numberFormat.format(new BigDecimal(95.1).divide(new BigDecimal(100)));

    return num;
}
Run Code Online (Sandbox Code Playgroud)

java bigdecimal

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

标签 统计

java ×3

bigdecimal ×2

fractions ×1

junit ×1

math ×1