Java 如何将数字降到小数点后两位?
我试图将一个双数据类型的数字降到小数点后两位,但当我输入一个像150这样的数字时,我只能得到一个 例如,如果我键入以下内容: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",
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