如何在java中删除包含.0的浮点数的小数部分

如何在java中删除包含.0的浮点数的小数部分,java,android,Java,Android,我只想删除包含.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”进行比较并获取子字符串”之外,还有其他方法可以执行此操作吗 编辑: 我不想要表演浮点数(比如1.0,2.0就是12,对吧?) 我觉得我的问题有点让人困惑… 这里是我的澄清:我只想向用户显示一系列浮点

我只想删除包含.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”进行比较并获取子字符串”之外,还有其他方法可以执行此操作吗

编辑: 我不想要表演浮点数(比如1.0,2.0就是12,对吧?)

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

试试,甚至:

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


您可以使用如下正则表达式:
\\.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.
}

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

或者,您可以简单地:

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));
小心,字符串.valueOf()是必需的,因为这不起作用。System.out.println(双精度)将始终被执行,即以下选项不起作用:

System.out.println((int)Math.round(number) == number ? (int) number : number);
尝试:


如果安卓给你柠檬。别扔了

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

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

尝试在浮点数之前强制转换int

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

String.format("%.0f", number)

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

  • 输入2000.43,结果=2000.43

  • 输入2000.00,结果=2000

     fun Double.FormattedAmount(): String {
    
        val otherSymbols = DecimalFormatSymbols(Locale.US)
        val decimalFormat = DecimalFormat("#,###,###.##", otherSymbols)
        return decimalFormat.format(this).toString()
    
     }
    

  • “将数字与”“.0”“进行比较并获取子字符串”不会将“45.00”转换为“45”。你想从结尾去掉任意数量的零吗?看看这个:你必须在'99.560'上保留尾随的0吗?或者'99.56'可以吗?发布一些源代码。没有它,你的问题毫无意义。我不理解你的评论。我的意思是,对于您列出的所有I/p和所需的o/p,如果I/p为99.560,o/p为99.56是可以接受的,那么一个简单的数字格式格式化程序=新的DecimalFormat(“#########”)将满足您的要求。(所有其他o/P将如您所列)-1您的最终打印语句(使用第三级运算符)不起作用,因为
    println(double)
    将始终被调用。我不明白。。。你是怎么做到的?谢谢你,在安卓系统下,快速高效的^^^我做了Float resists=floatval-FloatMath.floor(floatval);这正是我想做的!在回答之前,请先看这个。没有帮助。它仍然保持零。浮点运算有效too@Aba谢谢你的提醒,伙计。
     fun Double.FormattedAmount(): String {
    
        val otherSymbols = DecimalFormatSymbols(Locale.US)
        val decimalFormat = DecimalFormat("#,###,###.##", otherSymbols)
        return decimalFormat.format(this).toString()
    
     }