Java DecimalFormat省略小数点前的前导零
让我们看下面的代码片段Java DecimalFormat省略小数点前的前导零,java,format,decimal,Java,Format,Decimal,让我们看下面的代码片段 double f = .123; System.out.println(f); System.out.println(new DecimalFormat(".###").format(f)); 因此,我们可以使用####省略前导零0,尽管我们必须定义小数点/句点后的尾随数字 我想定义一个DecimalFormat格式化程序,它可以在小数点后提供未指定的位数 我该怎么做 p、 美国 我确实试过“,但我们不打印十进制数字。我们可以使用一些格式语法,如“。#*
double f = .123;
System.out.println(f);
System.out.println(new DecimalFormat(".###").format(f));
因此,我们可以使用####
省略前导零0,尽管我们必须定义小数点/句点后的尾随数字
我想定义一个DecimalFormat格式化程序,它可以在小数点后提供未指定的位数
我该怎么做
p、 美国
我确实试过“
,但我们不打印十进制数字。我们可以使用一些格式语法,如“。#*”
?您可以将数字转换为字符串并跳过第一个字符:
double f = .123;
System.out.println(Double.toString(f).substring(1));
经过一段时间的研究,我不相信这可以通过使用DecimalFormat
实现。但是,您建议添加的“”。#*”
,可能是一个有用的补充。您可以将数字转换为字符串并跳过第一个字符:
double f = .123;
System.out.println(Double.toString(f).substring(1));
经过一段时间的研究,我不相信这可以通过使用DecimalFormat
实现。但是,您建议的
“.*”,可能是一个有用的补充。因为float在dicimal points之后没有未指定数量的,
只需使用您期望的最大数量的。
您还可以将数字转换为字符串并选择要显示的子字符串
float f = 0.123;
String fs = Float.toString(f);
System.out.println(fs.substring(fs.indexOf('.'), fs.lenght());
若你们事先不知道,若你们的数字只有一个前导零,那个么这也行得通
不幸的是,我无法告诉您使用DecimalFormatter是否也可以实现这一点。因为float在dicimal points之后没有未指定数量的
只需使用您期望的最大数量的
您还可以将数字转换为字符串并选择要显示的子字符串
float f = 0.123;
String fs = Float.toString(f);
System.out.println(fs.substring(fs.indexOf('.'), fs.lenght());
若你们事先不知道,若你们的数字只有一个前导零,那个么这也行得通
不幸的是,我无法告诉您,使用DecimalFormatter是否也可以实现这一点。Double是一种有限近似(64位,包括符号和指数),因此无法实现无限和精确性 使用大小数。字符串构造函数将根据字符串获取其精度
BigDecimal n = new BigDecimal("0.1234567890123456789012345678901234567890");
n = n.multiply(n); // n now has double precision.
String s = n.toPlainString().replaceFirst("^0\\.", "."); // Without exponent.
由于您需要无限制的表示,只需使用toPlainString
。
关于在周期之前删除零,可以用正则表达式替换。Double是一个有限近似值(64位,包括符号和指数),因此不受限制,精确性不能用它来实现 使用大小数。字符串构造函数将根据字符串获取其精度
BigDecimal n = new BigDecimal("0.1234567890123456789012345678901234567890");
n = n.multiply(n); // n now has double precision.
String s = n.toPlainString().replaceFirst("^0\\.", "."); // Without exponent.
由于您需要无限制的表示,只需使用toPlainString
。
关于在周期之前删除零,可以通过正则表达式替换来完成。谢谢你在
.*.
上的支持-本机格式化方式未知,这就是为什么我在.*.
上请求你的支持-本机格式化方式未知,这就是我询问的原因