为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中使用Double保持精度

在Java中使用Double保持精度

慕容708150 2019-05-31 10:51:53
在Java中使用Double保持精度public class doublePrecision {     public static void main(String[] args) {         double total = 0;         total += 5.6;         total += 5.8;         System.out.println(total);     }}以上代码打印:11.399999999999我如何才能把它打印出来(或者可以用作)11.4?
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

例如,当您输入一个双数字时,33.33333333333333,您得到的值实际上是最接近可表示的双精度值,确切地说:

33.3333333333333285963817615993320941925048828125

除以100表示:

0.333333333333333285963817615993320941925048828125

它也不能表示为双精度数字,因此再次将其舍入到最接近的可表示值,即:

0.3333333333333332593184650249895639717578887939453125

输出此值时,它将被舍入。再一次到17位小数,给出:

0.33333333333333326


查看完整回答
反对 回复 2019-05-31
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

如果您只想将值处理为分数,则可以创建一个包含分子和分母字段的分数类。

编写加、减、乘和除的方法以及toDouble方法。这样,您可以避免在计算期间浮动。

编辑:快速实现,

public class Fraction {private int numerator;private int denominator;public Fraction(int n, int d){
    numerator = n;
    denominator = d;}public double toDouble(){
    return ((double)numerator)/((double)denominator);}public static Fraction add(Fraction a, Fraction b){
    if(a.denominator != b.denominator){
        double aTop = b.denominator * a.numerator;
        double bTop = a.denominator * b.numerator;
        return new Fraction(aTop + bTop, a.denominator * b.denominator);
    }
    else{
        return new Fraction(a.numerator + b.numerator, a.denominator);
    }}public static Fraction divide(Fraction a, Fraction b){
    return new Fraction(a.numerator * b.denominator, a.denominator * b.numerator);}public static Fraction multiply(Fraction a, Fraction b){
    return new Fraction(a.numerator * b.numerator, a.denominator * b.denominator);}public static Fraction subtract(Fraction a, Fraction b){
    if(a.denominator != b.denominator){
        double aTop = b.denominator * a.numerator;
        double bTop = a.denominator * b.numerator;
        return new Fraction(aTop-bTop, a.denominator*b.denominator);
    }
    else{
        return new Fraction(a.numerator - b.numerator, a.denominator);
    }}}


查看完整回答
反对 回复 2019-05-31
  • 3 回答
  • 0 关注
  • 3174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信