标签: decimalformat

如何将DecimalFormat的小数分隔符从逗号更改为点/点?

我有一个小的疯狂方法,将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)

我确实需要分隔符是点或点而不是逗号.有没有人知道如何完成这个小壮举?

我已阅读,尤其是这个,现在死,但我无法找到一个方法来完成这件事.我是以错误的方式接近这个吗?这样做有更优雅的方式吗?甚至可能是一个解决不同本地数字表示的解决方案,因为逗号将完全符合欧洲标准.

java android decimal-point bigdecimal decimalformat

192
推荐指数
5
解决办法
24万
查看次数

78
推荐指数
8
解决办法
26万
查看次数

如何将String解析为BigDecimal?

我有这个字符串:10,692,467,440,017.120(这是一个金额).

我想将它解析为BigDecimal.问题是我尝试了DecimalFormat和NumbeFormat都是徒劳的.有帮助吗?

java string parsing bigdecimal decimalformat

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

使用DecimalFormat显示填充零

我正在使用DecimalFormat将双精度格式化为2位小数,如下所示:

DecimalFormat dec = new DecimalFormat("#.##");
double rawPercent = ( (double)(count.getCount().intValue()) / 
                            (double)(total.intValue()) ) * 100.00;
double percentage = Double.valueOf(dec.format(rawPercent));
Run Code Online (Sandbox Code Playgroud)

它工作,但如果我有一个像20这样的数字,它给了我这个:

20.0
Run Code Online (Sandbox Code Playgroud)

我想要这个:

20.00
Run Code Online (Sandbox Code Playgroud)

有什么建议?

java formatting decimalformat

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

如何使用Java的DecimalFormat进行"智能"货币格式化?

我想使用Java的DecimalFormat来格式化双打,如下所示:

#1 - 100 -> $100
#2 - 100.5 -> $100.50
#3 - 100.41 -> $100.41
Run Code Online (Sandbox Code Playgroud)

到目前为止我能想出的最好的是:

new DecimalFormat("'$'0.##");
Run Code Online (Sandbox Code Playgroud)

但这不适用于案例#2,而是输出"$ 100.5"

编辑:

很多这些答案只考虑案例#2和#3而没有意识到他们的解决方案会导致#1将100格式化为"$ 100.00"而不仅仅是"$ 100".

java formatting decimalformat

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

在kotlin中使用十进制格式格式化数字

我面临一个问题,我需要用一个数字做一些计算,例如5000,00乘以 ( 1,025^3 )。

所以在这种情况下 5000,00 * (1,025^3) = 5385,45

所以我的问题是,我怎么能格式化数字5385,45要像5.385,45使用十进制格式可能?

我自己尝试过,我做了这段代码,在应用程序中输出 5385,45 但不是5.385,45

    var interestValue = (5000,00*(Math.pow(1.025,yearValue)))
    val number = java.lang.Double.valueOf(interestValue)
    val dec = DecimalFormat("#,00")
    val credits = dec.format(number)
    vValueInterest.text = credits
Run Code Online (Sandbox Code Playgroud)

android decimalformat kotlin

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

Laravel验证小数0-99.99

Laravel没有验证decimal,所以我需要一个regex或其他验证方法来验证数值0 - 99.99

我试过了

required|regex:^\d{0,2}(\.\d{1,2})?$/
required|regex:[1-9]\d?(\.\d\d?)?|0\.[1-9]\d?||0\.0[1-9]
required|regex:/[1-9]\d?(\.\d\d?)?|0\.[1-9]\d?||0\.0[1-9]/
required|regex:/[\d]{2}.[\d]{2}/
required|regex:/[\d]{0-2}.[\d]{0,2}/
Run Code Online (Sandbox Code Playgroud)

我要么在尝试输入时使用"无效格式",要么输入0.05未知修饰符preg_match

任何有关regex验证小数的方法的帮助laravel都是值得赞赏的(在十进制之前或之后有可选值

regex validation decimalformat laravel-5

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

更改DecimalFormat区域设置

DecimalFormat在Edittext的addTextChangedListener方法中有自定义,一切都很完美,但是当我更改语言(语言环境)时,我的addTextChangedListener无效.

double answer = inputDouble * counterToDouble;
DecimalFormat df = new DecimalFormat("##.########");
// df=(DecimalFormat)numberFormat;

df.setRoundingMode(RoundingMode.DOWN);
answer = Double.parseDouble(df.format(answer));

unicoinsAmmount.setText(String.valueOf(df.format(answer)));
Run Code Online (Sandbox Code Playgroud)

我搜索了我的问题并找到了NumberFormat解决方案:

NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用这段代码.

java android bigdecimal decimalformat

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

使用DecimalFormat的科学记数法中有效数字的位数

我试图完全理解DecimalFormat的确切行为.我目前正在用这个类的科学记谱功能进行一些测试.而且我在调整科学记数法中有效位数的确切问题时遇到了问题.根据Java 7的Javadoc:

尾数中的有效位数是最小整数和最大小数位的总和,并且不受最大整数位数的影响.例如,用"## 0.## E0"格式化的12345是"12.3E3".要显示所有数字,请将有效数字计数设置为零.有效位数不会影响解析.

因此,我正在测试它:

DecimalFormat formatone = new DecimalFormat("##0.##E0");
System.out.println(formatone.format(toF));
Run Code Online (Sandbox Code Playgroud)

我获得以下输出:

12,345E3
Run Code Online (Sandbox Code Playgroud)

根据我刚刚展示的Javadoc的摘录,我想我应该获得

12.3E3
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么 ?我理解错了吗?

在此先感谢您的所有澄清:-)

java decimalformat

15
推荐指数
2
解决办法
1488
查看次数

Java:使用DecimalFormat格式化双精度和整数,但保持整数不带小数分隔符

我正在尝试在Java程序中格式化一些数字.数字将是双精度数和整数数.处理双精度时,我想只保留两个小数点,但在处理整数时,我希望程序保持不受影响.换一种说法:

双打 - 输入

14.0184849945
Run Code Online (Sandbox Code Playgroud)

双打 - 输出

14.01
Run Code Online (Sandbox Code Playgroud)

整数 - 输入

13
Run Code Online (Sandbox Code Playgroud)

整数 - 输出

13 (not 13.00)
Run Code Online (Sandbox Code Playgroud)

有没有办法在同一个 DecimalFormat实例中实现它?到目前为止,我的代码如下:

DecimalFormat df = new DecimalFormat("#,###,##0.00");
DecimalFormatSymbols otherSymbols = new   DecimalFormatSymbols(Locale.ENGLISH);
otherSymbols.setDecimalSeparator('.');
otherSymbols.setGroupingSeparator(',');
df.setDecimalFormatSymbols(otherSymbols);
Run Code Online (Sandbox Code Playgroud)

java double integer decimalformat

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