标签: decimalformat

如何在使用DecimalFormat时始终显示小数部分?

Float sum = new Float(300); // always somehow calculated
DecimalFormat df = new DecimalFormat("#.#");
String s = df.format(sum/3);  // prints 100, I want 100.0
s = df.format(301/3); // pritns 100.3 which is correct
Run Code Online (Sandbox Code Playgroud)

结果应始终格式化为1十进制,如何操作?

java decimalformat

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

DecimalFormat模式

public static String formatAmountUpToTwoDecimalNumber(String amount)
    {       
        if(amount==null || "".equals(amount))
        {
             return "";
        }  
        Double doubleAmount = Double.valueOf(amount);
        double myAmount = doubleAmount.doubleValue();
        NumberFormat f = new DecimalFormat("###,###,###,###,##0.00");
        String s = f.format(myAmount);
        return s;
    }
Run Code Online (Sandbox Code Playgroud)

"###,###,###,###,##0.00",这种模式的目的究竟是什么?我认为它有两个目的

  1. 分组号码,即千分隔符号
  2. 在十进制之后附加两个零,如果缺少十进制,则转换为23到23.00

但为什么有"0"而不是"#"十进制之前?这零的目的究竟是什么?谢谢您的帮助.

java decimalformat

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

最优雅的方式加载csv点与R中的千位分隔符

注意:据我所知,这个问题并不重复!我找到的所有问题/答案要么是如何从已经在R中的数据中消除点,要么在加载时如何将小数点更改为逗号.

我有一个csv,其数字如下:4.123,98.问题是因为.加载时输出变成了字符串矩阵read.table,read.csv或者read.csv2.更改dec,于事无补.

我的问题
加载这个csv的最优雅的方法是什么,以便数字变成例如4123.98数字?

csv r decimal decimal-point decimalformat

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

使用DecimalFormat格式化抛出异常 - "无法将给定对象格式化为数字"

这可能看起来像一个重复的问题,但我尝试了以下所有链接,无法得到正确的答案.

无法将给定对象格式化为数字组合框

非法论证例外

但我没有弄错.这是我的代码

DecimalFormat twoDForm = new DecimalFormat("#.##");
double externalmark = 1.86;
double internalmark = 4.0;
System.out.println(String.valueOf((externalmark*3+internalmark*1)/4));
String val = String.valueOf((externalmark*3+internalmark*1)/4);
String wgpa1=twoDForm.format(val); // gives exception
String wgpa2=twoDForm.format((externalmark*3+internalmark*1)/4)); // works fine
System.out.println(wgpa1);
Run Code Online (Sandbox Code Playgroud)

format方法采用Object类型参数,这就是我传递给出异常的String对象的原因

线程"main"中的异常java.lang.IllegalArgumentException:无法 将给定的Object格式化为数字.

但是当我将double值作为参数时,程序运行正常.但是如果方法是用Object类型参数定义的,为什么我在传递时传递一个异常并且在传递时String没有获得异常double

java overloading exception illegalargumentexception decimalformat

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

如何根据输入长度更改DecimalFormat行为?

我使用以下DecimalFormat模式:

// Use ThreadLocal to ensure thread safety.
private static final ThreadLocal <NumberFormat> numberFormat =
  new ThreadLocal <NumberFormat>() {
    @Override protected NumberFormat initialValue() {
        return new DecimalFormat("#,##0.00");
    }
};
Run Code Online (Sandbox Code Playgroud)

这将执行以下转换:

1    -> 1.00
1.1  -> 1.10
1.12 -> 1.12
Run Code Online (Sandbox Code Playgroud)

我现在有一个额外的要求.

1.123  -> 1.123
1.1234 -> 1.123
Run Code Online (Sandbox Code Playgroud)

这意味着什么时候

  • 小数位少于两位,我将"填充"到小数点后两位.
  • 正好有两三个小数位,我什么都不做.
  • 有三个以上的小数位,我将截断到三位小数.

我可以在DecimalFormat课堂上指定这种行为吗?

java format decimal number-formatting decimalformat

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

从double中删除尾随零

我想删除所有尾随零而不截断或舍入数字,如果它没有任何.例如,数字可能类似12.0,在这种情况下,应删除尾随零.但这个数字也可能是一种几乎不合理的东西,比如12.9845927346958762...继续走到屏幕的边缘.有没有办法设置DecimalFormat或其他类来剪切尾随零,同时保持非理性完整?

java double decimalformat

8
推荐指数
3
解决办法
2万
查看次数

Java DecimalFormat返回"?"

DecimalFormat有时会回来'?' 在尝试时format().是否有可以创建此方案的输入?

例如:

DecimalFormat df = new DecimalFormat("#.####");
df.format(X); // output : '?'
Run Code Online (Sandbox Code Playgroud)

还有什么X可能呢?

java formatting decimalformat

7
推荐指数
2
解决办法
5069
查看次数

如何使用十进制格式将0显示为0.00?

我使用以下代码使数字显示两个小数位和数千个逗号分隔符.

public static String formatNumber(double amount){
    DecimalFormat formatter = new DecimalFormat("#,###.00");
    return formatter.format(amount);
}
Run Code Online (Sandbox Code Playgroud)

对于其他数字,它可以,但0返回为".00"我希望它为"0.00"我应该更改什么?

java decimalformat

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

什么是Java DecimalFormat的c#等价物?

我如何将以下代码转换为C#

DecimalFormat form 
String pattern = "";
for (int i = 0; i < nPlaces - nDec - 2; i++) {
        pattern += "#";
}
pattern += "0.";
for (int i = nPlaces - nDec; i < nPlaces; i++) {
        pattern += "0";
}
form = (DecimalFormat) NumberFormat.getInstance();
DecimalFormatSymbols symbols = form.getDecimalFormatSymbols();
symbols.setDecimalSeparator('.');
form.setDecimalFormatSymbols(symbols);
form.setMaximumIntegerDigits(nPlaces - nDec - 1);
form.applyPattern(pattern);
Run Code Online (Sandbox Code Playgroud)

编辑特别的问题是我不希望小数分隔符改变Locale(例如,一些Locales会使用',').

c# java decimalformat

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

在 Textview 中使用千位分隔符和十进制格式显示数字

如何根据设备的 Locale.getDefault() 格式化大于 999 的浮点数。

对于十进制格式,目前我正在使用这个:

DecimalFormat decim = new DecimalFormat("#.##");
tv.setText(decim.format(someFloat));
Run Code Online (Sandbox Code Playgroud)

对于千位分隔符:

tv.setText(String.format(Locale.getDefault(), "%,d", someInt));
Run Code Online (Sandbox Code Playgroud)

如果我想显示3.678,66(或3,678.66- 取决于 Locale.getDefault()),如何将两者结合起来?

java formatting android decimalformat

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