我有一个小的疯狂方法,将BigDecimal值转换为漂亮可读的字符串.
private String formatBigDecimal(BigDecimal bd){
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(3);
df.setMaximumFractionDigits(3);
df.setMinimumIntegerDigits(1);
df.setMaximumIntegerDigits(3);
df.setGroupingSize(20);
return df.format(bd);
}
Run Code Online (Sandbox Code Playgroud)
然而,它还产生了一个所谓的分组分隔符",",它使我的所有值都出现如下:
xxx,xxx
Run Code Online (Sandbox Code Playgroud)
我确实需要分隔符是点或点而不是逗号.有没有人知道如何完成这个小壮举?
我已阅读本,尤其是这个,现在死,但我无法找到一个方法来完成这件事.我是以错误的方式接近这个吗?这样做有更优雅的方式吗?甚至可能是一个解决不同本地数字表示的解决方案,因为逗号将完全符合欧洲标准.
我已经阅读了很多stackoverflow问题,但似乎没有一个对我有用.我正在math.round()用来完善.这是代码:
class round{
public static void main(String args[]){
double a = 123.13698;
double roundOff = Math.round(a*100)/100;
System.out.println(roundOff);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:123但我希望它是123.14.我读到添加*100/100会有所帮助但是你可以看到我没有设法让它工作.
输入和输出都是双倍的绝对必要.
如果您更改上面代码的第4行并发布它将会非常有用.
我在格式化双精度小数时遇到了一些问题.如果我有一个双精度值,例如4.0,我如何格式化小数,使其为4.00?
我正在读取XMLJava中的货币.
String currency = 135.69;
Run Code Online (Sandbox Code Playgroud)
当我将其转换为BigDecimal我得到:
System.out.println(new BigDecimal(135.69));
Run Code Online (Sandbox Code Playgroud)
输出:
135.68999999999999772626324556767940521240234375.
Run Code Online (Sandbox Code Playgroud)
为什么输出这么多数字呢?我怎么能避免这个?我想要的只是输出135.69.
这个程序有效,除非nJars的数量是7的倍数,我会得到一个答案,如$ 14.999999999999998.对于6,输出为14.08.如何修复7的倍数的异常,这样它会显示14.99美元?
import java.util.Scanner;
public class Homework_17
{
private static int nJars, nCartons, totalOunces, OuncesTolbs, lbs;
public static void main(String[] args)
{
computeShippingCost();
}
public static void computeShippingCost()
{
System.out.print("Enter a number of jars: ");
Scanner kboard = new Scanner (System.in);
nJars = kboard.nextInt();
int nCartons = (nJars + 11) / 12;
int totalOunces = (nJars * 21) + (nCartons * 25);
int lbs = totalOunces / 16;
double shippingCost = ((nCartons * 1.44) + (lbs + 1) * 0.96) …Run Code Online (Sandbox Code Playgroud) 在将double加到字符串并尝试格式化后尝试获取两位小数时,我遇到了一个小问题
pieChart.setCenterText("$" + "" + "" +String.format( "% 1$ .2f", Double.toString(dataCost),""));
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我改进上面的代码行,以便它可以显示到两个小数位?你还会注意到我试图在美元符号和值之间留一个空格