如何在java中删除包含.0的浮点数的小数部分
我只想删除包含.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,对吧?) 我觉得我的问题有点让人困惑… 这里是我的澄清:我只想向用户显示一系列浮点
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)
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()
}