Java 如何将数字降到小数点后两位?

Java 如何将数字降到小数点后两位?,java,double,decimal,floor,Java,Double,Decimal,Floor,我试图将一个双数据类型的数字降到小数点后两位,但当我输入一个像150这样的数字时,我只能得到一个 例如,如果我键入以下内容: double num=150.52152 Math.floor(num*100)/100 我得到了150.52,没关系 但是如果我输入double num=150我会得到150.0,而不是150.00 如何解决此问题?要始终显示awnser,小数点后显示两个值,则有两种输出方法。你的第一份报告如下: System.out.printf("%.2f",

我试图将一个双数据类型的数字降到小数点后两位,但当我输入一个像150这样的数字时,我只能得到一个

例如,如果我键入以下内容:

double num=150.52152

Math.floor(num*100)/100

我得到了
150.52
,没关系

但是如果我输入
double num=150
我会得到
150.0
,而不是
150.00


如何解决此问题?

要始终显示awnser,小数点后显示两个值,则有两种输出方法。你的第一份报告如下:

System.out.printf("%.2f", <YOUR VALUE>);
System.out.printf(“%.2f”,);
%.2F在首先由printf(打印浮点)定义的浮点中调用两个小数。这不能删除,因为整数不能是十进制

你的第二个选择是使用十进制格式。例如:

// First define your fromat as decimalFormat
DecimalFormat decimalFormat = new DecimalFormat();
// Define number of digits after the decimal point in your case two
decimalFormat.setMaximumFractionDigits(2);
// Print out our result now formated in what we have just defined
System.out.println(decimalFormat.format(<YOUR VALUE>));
//首先将fromat定义为decimalFormat
DecimalFormat DecimalFormat=新的DecimalFormat();
//在案例2中定义小数点后的位数
小数格式setMaximumFractionDigits(2);
//打印出我们刚刚定义的结果
System.out.println(decimalFormat.format());
虽然您输出一个字符串,但它可以带一个浮点(您可能需要在值后面加上“f”以确保它已定义)


希望这是信息性的。

要始终显示awnser,小数点后显示两个值,您有两种输出方法。你的第一份报告如下:

System.out.printf("%.2f", <YOUR VALUE>);
System.out.printf(“%.2f”,);
%.2F在首先由printf(打印浮点)定义的浮点中调用两个小数。这不能删除,因为整数不能是十进制

你的第二个选择是使用十进制格式。例如:

// First define your fromat as decimalFormat
DecimalFormat decimalFormat = new DecimalFormat();
// Define number of digits after the decimal point in your case two
decimalFormat.setMaximumFractionDigits(2);
// Print out our result now formated in what we have just defined
System.out.println(decimalFormat.format(<YOUR VALUE>));
//首先将fromat定义为decimalFormat
DecimalFormat DecimalFormat=新的DecimalFormat();
//在案例2中定义小数点后的位数
小数格式setMaximumFractionDigits(2);
//打印出我们刚刚定义的结果
System.out.println(decimalFormat.format());
虽然您输出一个字符串,但它可以带一个浮点(您可能需要在值后面加上“f”以确保它已定义)


希望这是有用的。

控制小数位数是将小数转换为
字符串的功能。请记住,您正在从基数2查看基数10中的值。并非每个这样的值都是可表示的(例如
System.out.println(0.05+0.1);
)。相反,请使用
String
格式。像

System.out.printf("%.02f%n", 150.0);


控制小数位数是将小数转换为
字符串的功能。请记住,您正在从基数2查看基数10中的值。并非每个这样的值都是可表示的(例如
System.out.println(0.05+0.1);
)。相反,请使用
String
格式。像

System.out.printf("%.02f%n", 150.0);


你可以用两种方法来做

  • 使用
    String.format
  • String.format(“%.2f”,floorValue)
    
  • 使用
    DecimalFormat
  • new DecimalFormat(“#,##0.00”)。格式(floorValue)
    
    我建议您将
    new DecimalFormat(“#,###0.00”)
    存储到
    final
    变量中,并在需要时使用它,而不是每次需要格式化时都创建一个新的
    DecimalFormat
    对象

    演示:

    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    
    public class Main {
        public static void main(String[] args) {
            final NumberFormat format = new DecimalFormat("#,##0.00");// Do it once
    
            double floorValue = 150;
            System.out.println(format.format(floorValue));// Use it wherever you need to
    
            // Alternatively
            System.out.printf(String.format("%.2f", floorValue));
        }
    }
    
    150.00
    150.00
    
    输出:

    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    
    public class Main {
        public static void main(String[] args) {
            final NumberFormat format = new DecimalFormat("#,##0.00");// Do it once
    
            double floorValue = 150;
            System.out.println(format.format(floorValue));// Use it wherever you need to
    
            // Alternatively
            System.out.printf(String.format("%.2f", floorValue));
        }
    }
    
    150.00
    150.00
    

    你可以用两种方法来做

  • 使用
    String.format
  • String.format(“%.2f”,floorValue)
    
  • 使用
    DecimalFormat
  • new DecimalFormat(“#,##0.00”)。格式(floorValue)
    
    我建议您将
    new DecimalFormat(“#,###0.00”)
    存储到
    final
    变量中,并在需要时使用它,而不是每次需要格式化时都创建一个新的
    DecimalFormat
    对象

    演示:

    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    
    public class Main {
        public static void main(String[] args) {
            final NumberFormat format = new DecimalFormat("#,##0.00");// Do it once
    
            double floorValue = 150;
            System.out.println(format.format(floorValue));// Use it wherever you need to
    
            // Alternatively
            System.out.printf(String.format("%.2f", floorValue));
        }
    }
    
    150.00
    150.00
    
    输出:

    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    
    public class Main {
        public static void main(String[] args) {
            final NumberFormat format = new DecimalFormat("#,##0.00");// Do it once
    
            double floorValue = 150;
            System.out.println(format.format(floorValue));// Use it wherever you need to
    
            // Alternatively
            System.out.printf(String.format("%.2f", floorValue));
        }
    }
    
    150.00
    150.00
    

    您也可以这样做(但我更喜欢
    String.format
    System.out.printf
    )。 请注意,尾随的零不会显示,因此
    100.10230
    将显示为
    100.1

    生成一些数据

    Random r =  new Random();
    double[] dbls = r.doubles(10).map(d->d*1000).toArray();
    
    打印值

    for (double d : dbls) {
        double df = (int)(d*100+.5)/100.;
        System.out.println(d + " --> " + df);
    } 
    
    打印与此类似的内容

    738.2358190119878 --> 738.24
    902.7752505591593 --> 902.78
    467.26349962571953 --> 467.26
    503.2049813704648 --> 503.2
    20.288046322504805 --> 20.29
    409.10379837674714 --> 409.1
    559.2821881121522 --> 559.28
    288.5513513499909 --> 288.55
    124.07583289719682 --> 124.08
    535.1799354550361 --> 535.18
    

    您也可以这样做(但我更喜欢
    String.format
    System.out.printf
    )。 请注意,尾随的零不会显示,因此
    100.10230
    将显示为
    100.1

    生成一些数据

    Random r =  new Random();
    double[] dbls = r.doubles(10).map(d->d*1000).toArray();
    
    打印值

    for (double d : dbls) {
        double df = (int)(d*100+.5)/100.;
        System.out.println(d + " --> " + df);
    } 
    
    打印与此类似的内容

    738.2358190119878 --> 738.24
    902.7752505591593 --> 902.78
    467.26349962571953 --> 467.26
    503.2049813704648 --> 503.2
    20.288046322504805 --> 20.29
    409.10379837674714 --> 409.1
    559.2821881121522 --> 559.28
    288.5513513499909 --> 288.55
    124.07583289719682 --> 124.08
    535.1799354550361 --> 535.18
    

    150.0与150.00相同,只是值如何表示的问题。如果您想要一个特定的输出,您需要使用数字格式化程序150.0与150.00相同,这只是值如何表示的问题。如果您想要一个特定的输出,您需要使用数字格式化程序。什么是
    四舍五入
    ,当四舍五入150时,它将如何显示2位小数?只需使用它更简单的
    System.out.printf(“%.2f”,val)什么是
    val
    ?(我知道这是什么,但请发表一个完整和有用的答案)这不是我的问题,我确切地知道如何处理这个问题。我要求您编辑您的答案,使其成为正确且有意义的答案。此答案现在是重复的,因此请删除它。什么是
    四舍五入
    ,当四舍五入为150时,如何显示2位小数?只需使用此选项,它更容易
    System.out.printf(“%.2f”,val)什么是
    val
    ?(我知道这是什么,但请发表一个完整和有用的答案)这不是我的问题,我确切地知道如何处理这个问题。我要求你编辑你的答案,使之成为一个正确和有意义的答案。这个答案现在是重复的,所以请删除它。非常感谢。我忘了提到我想在返回状态下打印它,如“购买价值:+num…”。。。那么我如何应用相同的东西呢?
    返回String.format(“购买值:%.02f”,150.0)@Po