我正在使用一种格式在我的 kotlin/Java 项目中显示符号,并且该格式完全按照其应有的方式进行,在正数前面有正号,在负数前面有负号。 然而零有一个正号,这是我的问题,我不希望 0 前面没有符号。
此代码显示示例 +1 +2 +3 ... -1 -2 -3.. 对于零,它具有正号 +0。 我希望零没有符号。
private companion object {
const val DECIMAL_SIGN_FORMAT = "+#;-#"
}
private val numberSignFormatter = DecimalFormat(DECIMAL_SIGN_FORMAT)
numberSignFormatter.format(progress).toString()
我认为这不能直接使用任何 Java API 来完成(或者 Kotlin,就此而言,它只是提供 Java API 的包装器)。
您始终可以定义自己的函数,定期格式化数字,然后删除
+
。
一个简单的版本可能如下所示:
inline fun String.formatZeroWithoutSign(number: Number): String =
format(number).replace("+0", "0")
您可以像这样使用它(或选择您喜欢的任何其他格式):
"%1$+d".formatZeroWithoutSign(progress)
我选择了 printf 样式的格式化程序,因为它更容易使用,但如果您想坚持这样做,显然也可以使用
DecimalFormat
来完成。
顺便说一句,如果您使用的是 Android,Android SDK 提供了一个具有以下内置功能的
NumberFormatter
:
NumberFormatter
.withLocale(...)
.sign(SignDisplay.EXCEPT_ZERO)
.format(progress)