我已经查看了一些与格式化数有关的线程。 大多数情况下,它的作品除了价值3.101。 Float和Double已经与##和00格式一起使用。Java - 十进制格式当返回浮点数或十进制数时丢失精度
import java.text.DecimalFormat;
public class DecimalFormatTest {
public static void main(String[] args)
{
Float d1 = -3.1011f;
Double ds = -3.1011;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println (Double.valueOf(df.format(d1)));
System.out.println (Double.valueOf(df.format(ds)));
DecimalFormat df2 = new DecimalFormat("#.00");
System.out.println (Double.valueOf(df2.format(d1)));
System.out.println (Double.valueOf(df2.format(ds)));
}
}
输出是:
-3.1
-3.1
-3.1
-3.1
预期输出:
-3.10
-3.10
-3.10
-3.10
正如上面提到的,这个工程我已经测试过的所有其他号码。出于某种原因,这导致了一个问题。
任何想法是什么让这个号码如此不同以及需要额外的步骤来获得第二位数字?
请记住,关键是我想最终返回一个浮点数或双精度值。
的[?我如何圆一个双在Java小数点后两位(可能的复制http://stackoverflow.com/questions/5710394/how-do-i -double-to-two-decimal-places-in-java) – Omore
我不完全清楚你的问题是什么。 –
删除'Double.valueOf'位,它会更好地工作。 – assylias