Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 在双精度小于1的情况下,如何消除小数点前的前导零?_Java_Floating Point - Fatal编程技术网

Java 在双精度小于1的情况下,如何消除小数点前的前导零?

Java 在双精度小于1的情况下,如何消除小数点前的前导零?,java,floating-point,Java,Floating Point,我正在做一个相当大的项目(对我来说,是高中的AP JAVA课程)。无论如何,对于项目的一部分,我需要能够对小数点进行四舍五入,并在小数点之前的开始处不使用零进行输出 例如:4999发-->0.5发 我需要:.4999轮-->.5 提前感谢本课程可以使用 DecimalFormat df = new DecimalFormat("####0.0"); System.out.println("Value: " + df.format(value)); 可以使用该类 DecimalFormat df

我正在做一个相当大的项目(对我来说,是高中的AP JAVA课程)。无论如何,对于项目的一部分,我需要能够对小数点进行四舍五入,并在小数点之前的开始处不使用零进行输出

例如:4999发-->0.5发 我需要:.4999轮-->.5

提前感谢

本课程可以使用

DecimalFormat df = new DecimalFormat("####0.0");
System.out.println("Value: " + df.format(value));
可以使用该类

DecimalFormat df = new DecimalFormat("####0.0");
System.out.println("Value: " + df.format(value));

正如Ingo提到的,您需要获得数字的字符串表示形式,以便根据需要修改输出。一种解决办法是使用
setMinimumIntegerDigits(0)
似乎符合要求。我相信还有更多的选项。

正如Ingo提到的,您需要获得数字的字符串表示形式,以便根据需要修改输出。一种解决办法是使用
setMinimumIntegerDigits(0)
似乎符合要求。我相信还有很多选择。

试试这个:

public static String format(double value, int decimalPlaces) {
   if (value >= 1 || value < 0) {
      throw new IllegalArgumentException("Value must be between 0 and 1");
   }
   final String tmp = String.format("%." + decimalPlaces + "f", value);
   return tmp.substring(tmp.indexOf('.'));
}
试试这个:

public static String format(double value, int decimalPlaces) {
   if (value >= 1 || value < 0) {
      throw new IllegalArgumentException("Value must be between 0 and 1");
   }
   final String tmp = String.format("%." + decimalPlaces + "f", value);
   return tmp.substring(tmp.indexOf('.'));
}

对您来说可能有些奇怪,但您可以使用
regex
像这样去掉前导零:

(假设您已经知道如何将小数位四舍五入到一)

控制台:

       .5

您可能觉得奇怪,但您可以使用
regex
这样去掉前导零:

(假设您已经知道如何将小数位四舍五入到一)

控制台:

       .5

您必须学会区分a)某种类型的值,如双精度b)描述此值的人类可读字符串。-舍入是一种数学运算,与“小数”无关。是的,我理解这一点,只是不太清楚,没有解释每一步。我将其舍入为一个double,然后使用double.toString(a)操作字符串。您必须学会区分a)某种类型的值,如double b)描述此值的人类可读字符串。-舍入是一种数学运算,与“小数”无关。是的,我理解这一点,只是不太清楚,没有解释每一步。我将其舍入为double,然后使用double.toString(a)操作字符串。DecimalFormat可能有用,但提供的格式不提供OPs所需的输出:“我需要:.4999舍入-->.5”。DecimalFormat可能有用,但提供的格式不提供OPs所需的输出:“我需要:.4999舍入-->.5”。没问题,您还可以将
tmp.indexOf('.')
替换为
1
,我将其保留在那里,因为我的原始代码旨在从任何正数中提取小数位数。请随意接受我的答案或@briancherron的答案,答案也是正确的。没问题,您也可以将
tmp.indexOf('.')
替换为
1
,因为我的原始代码是为了从任何正数中提取小数点。请随意接受我的答案或@briancherron的答案,这也是正确的。1+,我不知道
设置最小整数位数
。我已经更新了我的工作示例以包括。很高兴知道有一种标准的方法可以做到这一点。1+,我不知道
setMinimumIntegerDigits
。我已经更新了我的工作示例以包括。很高兴知道有一个标准的方法来做这件事。