14

我只想删除包含.0的浮点数的小数部分。所有其他数字都是可以接受的。例如:

  I/P: 1.0, 2.2, 88.0, 3.56666, 4.1, 45.00 , 99.560
  O/P: 1 ,  2.2, 88,   3.567,   4.1, 45 ,    99.560

除了“将数字与“.0”进行比较并获取子字符串之外,还有什么方法可以做到这一点?

编辑:我不想要 ACTING FLOAT NUMBERs(比如 1.0、2.0 只不过是 1 2 对吗?)

我觉得我的问题有点令人困惑......
这是我的澄清:我只想向用户显示一系列浮点数。如果数字的小数部分为零,则仅显示整数部分,否则按原样显示数字。我希望现在很清楚..

4

8 回答 8

17

如果安卓给你柠檬。不要扔。

YourFormatedStringNumber = NumberFormat.getInstance().format(myNumber);

makes -> "12.50" to "12.50"  and "12.00" to "12"

更多在文档中。

于 2015-07-18T19:45:22.657 回答
13

您可以使用正则表达式,例如:\\.0+$. 如果小数点后只有 0,则此正则表达式将产生 true。

你可以做的另一件事是这样的:

float x = 12.5;
float result = x - (int)x;
if (result != 0)
{
    //If the value of `result` is not equal to zero, then, you have a decimal portion which is not equal to 0.
}
于 2012-05-08T10:16:25.520 回答
12

尝试:

String.format("%.0f",value);
于 2015-07-16T09:21:39.107 回答
3

我还不能发表评论,所以请注意。数字值必须是双精度才能工作。

String.format("%.0f", number)
于 2020-01-27T10:03:43.127 回答
2

尝试NumberFormat甚至DecimalFormat

如果您不想显示小数点后可能没有数字的小数点,请使用 setDecimalSeparatorAlwaysShown。

于 2012-05-08T10:15:51.247 回答
0

好吧,从技术上讲,显示部分是文本,所以你可以用正则表达式来做。如果数字匹配,则使用组来提取正确的部分。(我稍后会用解决方案更新帖子。)

或者,你可以简单地去:

if ((int)Math.round(number) == number) {
   System.out.println((int) number)  
} else {
   System.out.println(number)  
}

甚至:

System.out.println((int) Math.round(number) == number ? 
    String.valueOf((int) number) : String.valueOf(number));

小心, String.valueOf() 是必需的,因为这不起作用。System.out.println(double) 将始终被执行,即以下内容不起作用:

System.out.println((int)Math.round(number) == number ? (int) number : number);
于 2012-05-08T10:16:55.597 回答
0

尝试在浮点数之前转换 int

于 2017-06-23T03:20:32.273 回答
0

我已经创建了这个扩展方法。如果金额包含小数(40.01),它将显示小数,否则它将仅显示金额(40.00)

  1. 输入 2000.43,结果 = 2,000.43

  2. 输入 2000.00,结果 = 2,000

     fun Double.FormattedAmount(): String {
    
        val otherSymbols = DecimalFormatSymbols(Locale.US)
        val decimalFormat = DecimalFormat("#,###,###.##", otherSymbols)
        return decimalFormat.format(this).toString()
    
     }
    
于 2021-02-23T18:16:58.007 回答