我希望
var decimal = DecimalFormat.getInstance(locale).parse(number);
Run Code Online (Sandbox Code Playgroud)
当区域设置为 de_DE 并且数字为“3.2”时,会产生 ParseException 作为“.” 不是此区域设置的有效分隔符。为什么是这样?区域设置的想法不是所有这些格式问题都以标准化方式处理吗?
我正在尝试设置小数值,下面是我的输入字符串
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
我需要格式化一个2位小数的数字.原始数字可以是整数或具有三个小数位的数字.但是,无论原始数字是整数还是具有小数位,结果都应格式化为逗号和两位小数.
我正在使用以下代码格式化代码,但它无法在上述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的新手,并且正在使用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) 我有以下代码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.
知道我怎么能这样做?
DecimalFormat四舍五入的方式似乎有些矛盾。
new DecimalFormat("0.0", new DecimalFormatSymbols(Locale.US)).format(number)
这是一些不同number值的返回值。
为什么会这样?更重要的是,如何获得正确的值(四舍五入为0.25时为0.3,四舍五入为0.45时为0.5)?
我正在尝试使用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会改变我的值的范围?
我想在屏幕上用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)
它可以工作,但是非常难看。还有其他解决方法吗?
我打算打印小数字(doubles),以便使用Newton&Secant方法打印错误.
我的一个错误是 5.433306166802499E-5
我想要打印 5.4333E-5
我想过用,BigDecimal但我不熟悉这门课.
我在android应用程序上的结果格式存在问题。
我使用DecimalFormat的格式为"###,###.00"。现在,100000.0返回的大数100,000.00是正确的。但是当我解析0 结果是.00。我该怎么做0.00。
注意:我尝试使用String.format扩展,("%.2f",value)但是问题是当它达到10000.0时,它返回10,0000.00。
decimalformat ×10
java ×10
bigdecimal ×3
decimal ×2
double ×1
format ×1
joptionpane ×1
locale ×1
swing ×1