- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当数字为零 (0) 时是否可以显示空白(空字符串)? (左边严格没有零)
最佳答案
您可以使用 MessageFormat
,特别是它的 ChoiceFormat
特性:
double[] nums = {
-876.123, -0.1, 0, +.5, 100, 123.45678,
};
for (double num : nums) {
System.out.println(
num + " " +
MessageFormat.format(
"{0,choice,-1#negative|0#zero|0<{0,number,'#,#0.000'}}", num
)
);
}
这打印:
-876.123 negative
-0.1 negative
0.0 zero
0.5 0.500
100.0 1,00.000
123.45678 1,23.457
请注意,MessageFormat
确实在底层使用了 DecimalFormat
。来自 the documentation:
FORMAT TYPE: number
FORMAT STYLE: subformatPattern
SUBFORMAT CREATED: new DecimalFormat(
subformatPattern,
DecimalFormatSymbols.getInstance(getLocale())
)
所以这确实使用了DecimalFormat
,尽管是间接的。如果出于某种原因禁止这样做,那么您必须自行检查特殊条件,因为 DecimalFormat
不区分零。来自 the documentation:
DecimalFormat
patterns have the following syntax:Pattern:
PositivePattern
PositivePattern ; NegativePattern
没有为零提供特殊模式的选项,因此没有可以为您执行此操作的 DecimalFormat
模式。例如,您可以使用 if
检查,或者让 MessageFormat/ChoiceFormat
为您完成检查,如上所示。
关于java.text.DecimalFormat 为零时为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001989/
我有这个代码: public double theInterest(){ return (accountBalance*i) +accountBalance; 我的问题是,有没
我有一个 DecimalFormat ,其模式如下 "#,###.###"但是,当我想输入例如 50.05 时,它不允许这样做,因为每次文本更改以及调用 时,我都会将字符串解析为数字 df.parse
在Java中,我试图让DecimalFormat强制指数符号上的符号。当它是积极的我需要一个加号出现。从我读到的内容来看,这似乎是理所当然的,但对我自己来说,它总是会引发错误。我知道可能还有其他方法可
我在使用 DecimalFormat 时遇到了最奇怪的事情。 我在网络应用程序中使用它。我设置了一些测试,但它在本地一直失败。我的一个 friend 运行了它,他能够成功运行 JUnit 测试。 奇怪
有人知道我在这里做错了什么吗?我有一个 float ,假设它是 0.04。格式化后变成0.03。显然输出结果已经比输入低0.01了。 这是我的代码: float creditAvailableProp
我想使用 DecimalFormat 将 float 格式化为给定的精度。我有的是这个 val formatter = DecimalFormat(if (precision > 0) "#0.${"
我正在为学校编写一个收银机程序,并添加一个“当前价格”标签。到目前为止,一切都很好。我试图使价格显示为 2 位小数,如果没有这种格式,它将显示 10 位以上小数的价格。这是我的代码: double a
我正在尝试为百万位小数的小数格式设置撇号分隔符。我收到格式错误的错误。 String text = ".000'000"; DecimalFormat dformat = new DecimalFor
目前,我在显示格式化小数时遇到问题。在我的本地计算机中,我有一个十进制值:0.002100000000 存储在数据库中。 @FacesConverter("bigDecimal4DigitsConv
我正在尝试格式化金额。但是小数值没有以正确的方式四舍五入。 public class Testing { private java.text.DecimalFormat dispAmt;
我正在使用 DecimalFormatter 读取格式化的十进制字符串值并将其转换为 float 。但是,当我运行时: DecimalFormat formatter = new Decima
我使用十进制格式在“.”之后获取 2 个数字,当区域设置为美国或法国时,它工作正常,但当区域设置为 Ar(阿拉伯语)时,它会给出此错误: java.lang.NumberFormatException
我想显示最多 6 位小数的 GPS 坐标。例如如果我的 GPS 位置类似于 x.yyyyyyyyyy,我只想显示 x.yyyyyy,为此我使用 DecimalFormat 类。但是,如果数字类似于 8
我的代码如下: DecimalFormat df = new DecimalFormat("0.##"); return Double.parseDouble(df.format(sum)); Sum
我尝试在 Android 中使用 NumberFormatter 格式化数字。我使用下面的代码,它工作得很好: NumberFormat formatter = new DecimalFormat(
我有一个以便士为单位的整数货币(例如:1234)。我需要输出为:$12.34。我们不允许在此赋值中使用 double 或 float ,只能使用整数。 这是我所拥有的: totalChange = 1
我想将所有数字四舍五入到小数点后 1 位。 例如 22.0 -6.1 我正在使用: DecimalFormat decimalFormat = new DecimalFormat("0.0"); mi
目前,我在 JTable 中显示了具有 3 位小数的 BigDecimal 值。当我得到的值为 2.500 或 1.000 时,我想要 2.5 和 1.0。这就是我尝试这个的原因:
我使用DecimalFormat类将数字格式化为字符串,反之亦然。 在我的数据库中,Java double 以特定方式表示:例如 128.88 存储为“00012888”。为了实现这一点,我使用“00
收到所有的问候。 我需要验证一个文本对应于一个数字。项目区域设置为 es_CO。我现在遇到的问题是,带有用作小数点分隔符的句点的文本被解析为整数,而这应该是一个错误,因为在上述位置,小数点分隔符是一个
我是一名优秀的程序员,十分优秀!