Java 在双精度小于1的情况下,如何消除小数点前的前导零?
我正在做一个相当大的项目(对我来说,是高中的AP JAVA课程)。无论如何,对于项目的一部分,我需要能够对小数点进行四舍五入,并在小数点之前的开始处不使用零进行输出 例如:4999发-->0.5发 我需要:.4999轮-->.5 提前感谢本课程可以使用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
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
。我已经更新了我的工作示例以包括。很高兴知道有一个标准的方法来做这件事。