将数字值从 XX.X 格式化为 .XXX java

Posted

技术标签:

【中文标题】将数字值从 XX.X 格式化为 .XXX java【英文标题】:Format number value from XX.X to .XXX java 【发布时间】:2017-02-17 20:10:52 【问题描述】:

我从服务器接收到一个以百分比形式读取的值,例如 77.5%。如何仅使用以下方法获得 0.775 的值:

String.format(Locale.getDefault(), formatPattern, floatValue);

我已经咨询了https://docs.oracle.com/javase/tutorial/java/data/numberformat.html,但它似乎并没有涵盖我的情况。

注意:当我们将模式放入配置文件时,我只能使用字符串格式。

【问题讨论】:

您使用的是什么模式,floatValue 是什么,您得到的结果是什么?你期待.775 而不是0.775 我们收到的是 77.5,希望它采用 .775 格式。我尝试过的模式是 %1$,.3f 【参考方案1】:

我们可以避免除以 100 而只是将浮点数向左移动两个位置:

double value = java.math.BigDecimal.valueOf(77.5).movePointLeft(2).doubleValue();

【讨论】:

【参考方案2】:

试试这个:

String value = "75%";
Double aNumber = (Double.parseDouble(value.replace("%", "")))/100;

【讨论】:

我只能用String.format(Locale.getDefault(), formatPattern, floatValue); @KristyWelsh 没有将值除以 100 的格式。您只能格式化它的值。 这就是我所害怕的。【参考方案3】:

这对你有用吗:

String num = "75.5%";
String res = new DecimalFormat("#.000").format(Double.parseDouble(num.substring(0, num.length()-1))/100);

【讨论】:

以上是关于将数字值从 XX.X 格式化为 .XXX java的主要内容,如果未能解决你的问题,请参考以下文章

格式化数据保留两位小数,输入格式为 :xxx,xx,,,,x,,(x为浮点数)

线程“主”java.lang.IllegalArgumentException 中的异常:无法将给定对象格式化为数字

将一个数字格式化为另一个数字的格式

在 C# 中将 Excel 列(或单元格)格式化为文本?

在 Netezza 中将带分数转换为浮点数

如何将数字格式化为固定的语言环境?