gpt4 book ai didi

java - 在 Android 中使用 DecimalFormat 格式化数字

转载 作者:行者123 更新时间:2023-11-29 05:12:45 25 4
gpt4 key购买 nike

我有一个 EditText 并且我设置了一个输入过滤器以仅允许提示此正则表达式的数字:

^\\d{1,8}(\\.\\d{0,2})?$

即8位整数和2位小数。

请注意,“0”。 (1 位数字后跟一个句点)是允许的。

在 edittext 焦点丢失时,我想阅读 edittext 中的文本并将其格式化以显示分组的数字并删除不重要的数字。比如一些场景:

1) 如果用户键入 1000。(句点在末尾且后面没有数字),我想在 edittext 中显示 1,0002)如果用户键入 000012. 或 000012 或 000012.0 或 000012.00 我想显示 123) 如果用户输入 1230.90 我想显示 1,230.9

所以我在下面执行,假设文本是要格式化的数字:

                    // Prepare format to apply
DecimalFormat format = new DecimalFormat();
format.setGroupingUsed(true);
format.setMaximumIntegerDigits(8);
format.setMaximumFractionDigits(2);

// Formats the number
String formattedText = format.format(text);

我知道我能做到:

DecimalFormat format = new DecimalFormat("########.##");

所以在应用格式时使用:

String formattedText = format.format(text);

它崩溃了。

例如,我曾尝试格式化 0. 和 0.5 数字,但没有成功。

如何摆脱这个?

最佳答案

首先将 text 变量转换为数字(包括处理解析失败的任何异常)。单参数格式重载需要长整型或 double 型。请参阅:http://developer.android.com/reference/java/text/DecimalFormat.html#inhmethods

您可能需要添加一些额外的字符串逻辑以确保转换在“0”时有效。不会直接转换为 long(例如,在转换前在字符串末尾附加一个额外的零)。

关于java - 在 Android 中使用 DecimalFormat 格式化数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27786326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com