You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除字符串中小数点后全为0的小数位?现有代码运行不生效求助

问题根因

  • 核心错误是没有接收replace()方法的返回值:Java中String属于不可变类,所有对字符串内容做修改的方法,都不会改动原字符串对象,只会返回修改后的新字符串。你仅调用price_normal2.replace(".00","")但没有将返回值赋值给变量,原字符串自然不会发生变化。
  • 现有逻辑存在场景漏洞:只判断了.00的情况,若遇到1234.0、1234.0000这类小数点后0的位数不等于2的场景,就无法满足「小数点后所有位都是0就删除小数部分」的需求。

修复方案

1. 快速适配当前场景(仅处理.00后缀)

只需给原变量赋值replace的返回值即可:

String price_normal2 ="1234.00";
if(price_normal2.contains(".00")){
    price_normal2 = price_normal2.replace(".00","");
    Log.i("PRICEEEEE",""+price_normal2);
}

2. 通用全场景适配(支持任意位数的全0小数部分)

用正则匹配替换,无需提前判断,自动处理所有符合要求的场景:

// 正则含义:匹配小数点后跟着1个及以上0、直到字符串结尾的片段,替换为空
String price_normal2 ="1234.00";
price_normal2 = price_normal2.replaceAll("\\.0+$", "");
Log.i("PRICEEEEE",""+price_normal2);

这种写法下,1234.0、1234.000都会被转换为1234,1234.25、1234.05这类有非0小数位的内容会保持原样。

内容的提问来源于stack exchange,提问作者Areeb Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:27:01