Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DecimalFormat省略小数点前的前导零_Java_Format_Decimal - Fatal编程技术网

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

关于在周期之前删除零,可以通过正则表达式替换来完成。谢谢你在
.*.
上的支持-本机格式化方式未知,这就是为什么我在
.*.
上请求你的支持-本机格式化方式未知,这就是我询问的原因