标签: decimalformat

为什么德语本地化的 DecimalFormat 能够成功地将“3.2”解析为 Java 中的小数?

我希望

var decimal = DecimalFormat.getInstance(locale).parse(number);
Run Code Online (Sandbox Code Playgroud)

当区域设置为 de_DE 并且数字为“3.2”时,会产生 ParseException 作为“.” 不是此区域设置的有效分隔符。为什么是这样?区域设置的想法不是所有这些格式问题都以标准化方式处理吗?

java format locale decimalformat

2
推荐指数
1
解决办法
389
查看次数

十进制转换

我正在尝试设置小数值,下面是我的输入字符串

String rate="1.000000000";
Run Code Online (Sandbox Code Playgroud)

转换为double:

Double converted=Double.valueOf(rate);
DecimalFormat format=new DecimalFormat("#.########"); //Setting decimal points to 8

System.out.println("ouput"+format.format(rate)); //Giving output as 1.
Run Code Online (Sandbox Code Playgroud)

我不明白该怎么做,请提示任何提示.

问候,

Chaitu

java decimalformat

1
推荐指数
1
解决办法
221
查看次数

使用正确的小数位数格式化数字

我需要格式化一个2位小数的数字.原始数字可以是整数或具有三个小数位的数字.但是,无论原始数字是整数还是具有小数位,结果都应格式化为逗号和两位小数.

  1. 当原始num = 56565656.342 ==>我需要56,565,656.34
  2. 当原始num = 56565656 ==>我需要56,565,656.00
  3. 当原始num = 56565656.7 ==>我需要56,565,656.70

我正在使用以下代码格式化代码,但它无法在上述2和3的情况下添加两个小数位.

String originalNumber = "56565656.7";
BigDecimal b = new BigDecimal(originalNumber).setScale(2, BigDecimal.ROUND_HALF_UP);
String formattedNumber = NumberFormat.getInstance().format(b);
Run Code Online (Sandbox Code Playgroud)

如果有任何方法可以以有效的方式完成此任务,请告诉我.

提前致谢.

java bigdecimal decimalformat

1
推荐指数
1
解决办法
1万
查看次数

JAVA OptionPane.showMessageDialog输出格式为十进制

我是Java的新手,并且正在使用GUI显示消息.所以如果使用控制台

System.out.printf("Your total montly bill is $%.2f",  totalCost); 
Run Code Online (Sandbox Code Playgroud)

给我输出十进制的方式.我试图用这个做同样的事情,但是我得到更多的十进制数字,因为totalCost是一个类型double.如何将输出格式化为仅在小数后显示两位数?谢谢.

JOptionPane.showMessageDialog(null, "Your monthly payment is " + totalCost);
Run Code Online (Sandbox Code Playgroud)

java swing joptionpane number-formatting decimalformat

1
推荐指数
1
解决办法
4万
查看次数

输入为xx.x时,DecimalFormat无法正常工作

我有以下代码DecimalFormat.

import java.util.*;
import java.lang.*;
import java.text.*;

class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        double d = 50.12345;
        DecimalFormat df = new DecimalFormat("#.##");
        System.out.println(df.format(d));

        d = 50.0;
        df = new DecimalFormat("#.##");
        System.out.println(df.format(d));

        d = (double) (1*1.000/Integer.parseInt(2+"")/1.000*100);
        df = new DecimalFormat("#.##");
        System.out.print(df.format(d));

        }
}
Run Code Online (Sandbox Code Playgroud)

这给我输出如下.

50.12
50
50
Run Code Online (Sandbox Code Playgroud)

我面临的问题是第二个数字.我想把它打印成50.00.

知道我怎么能这样做?

演示

java decimalformat

1
推荐指数
1
解决办法
4203
查看次数

Java DecimalFormat舍入错误?

DecimalFormat四舍五入的方式似乎有些矛盾。

new DecimalFormat("0.0", new DecimalFormatSymbols(Locale.US)).format(number)

这是一些不同number值的返回值。

  • 0.05返回0.0
  • 0.15返回0.2
  • 0.25返回0.2
  • 0.35返回0.4
  • 0.45返回0.4

为什么会这样?更重要的是,如何获得正确的值(四舍五入为0.25时为0.3,四舍五入为0.45时为0.5)?

java decimalformat

1
推荐指数
1
解决办法
613
查看次数

使用DecimalFormat的奇怪BigDecimal值

我正在尝试使用DecimalFormat转换一些字符串值.我试着用更好的方式向你解释我的问题:

我有以下方法:

private BigDecimal loadBigDecimal(String value){

    BigDecimal bigDecimalToReturn = null;
    DecimalFormat df = new DecimalFormat("##.###");
    bigDecimalToReturn = new BigDecimal(df.parse(value).doubleValue());
    return bigDecimalToReturn;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试运行该方法:

BigDeciaml dec = myObject.loadBigDecimal("120,11");
Run Code Online (Sandbox Code Playgroud)

dec的值是120.1099999999999994315658113919198513031005859375.为什么decimalFormat会改变我的值的范围?

java bigdecimal decimalformat

1
推荐指数
1
解决办法
580
查看次数

Java Double Format即使在为零时也显示2个小数点

我想在屏幕上用2个小数点打印出双精度值。到目前为止,这条线已经完美运行:

System.out.println(new DecimalFormat("$#,###.##").format(value));
Run Code Online (Sandbox Code Playgroud)

对于像这样的输入:

double value = 82348238482834.23482348;
Run Code Online (Sandbox Code Playgroud)

它输出:

$82,348,238,482,834.23
Run Code Online (Sandbox Code Playgroud)

这正是我想要的。但是,如果我有输入,则0希望将其打印出来$0.00。使用上述格式行,它会打印出来$0。我尝试将上面的代码更改为:

double value = 0;
System.out.println(new DecimalFormat("$#,###.00").format(value));
Run Code Online (Sandbox Code Playgroud)

但是那印出来了$.00。我可以这样做:

if(value == 0) {
    System.out.println("$0.00");
}
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是非常难看。还有其他解决方法吗?

java double decimal decimalformat

1
推荐指数
1
解决办法
3428
查看次数

如何将java double减少到n位有效数字?

我打算打印小数字(doubles),以便使用Newton&Secant方法打印错误.

我的一个错误是 5.433306166802499E-5

我想要打印 5.4333E-5

我想过用,BigDecimal但我不熟悉这门课.

java rounding-error decimal bigdecimal decimalformat

1
推荐指数
1
解决办法
1078
查看次数

具有千位分隔符的DecimalFormatter 0值返回.00

我在android应用程序上的结果格式存在问题。

我使用DecimalFormat的格式为"###,###.00"。现在,100000.0返回的大数100,000.00是正确的。但是当我解析0 结果是.00。我该怎么做0.00

注意:我尝试使用String.format扩展,("%.2f",value)但是问题是当它达到10000.0时,它返回10,0000.00。

java string-formatting decimalformat

1
推荐指数
1
解决办法
42
查看次数