当前位置: 首页 > news >正文

技术支持 淄博网站建设金属加工网站建设

技术支持 淄博网站建设,金属加工网站建设,网站建设 甲方欠款 如何处理,建设网站 费用问题 问题描述 小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程…

问题

问题描述

小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。


测试样例

样例1:

输入:s = "1294512.12412"
输出:'1,294,512.12412'

样例2:

输入:s = "0000123456789.99"
输出:'123,456,789.99'

样例3:

输入:s = "987654321"
输出:'987,654,321'

思路

要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,且保留小数部分并去掉无用的前置 0,我们可以分以下几步:

  1. 去掉前置无效的 0

    • 如果字符串以多个 0 开头(如 "0000123.45"),需要去掉这些无效的 0
    • 使用 BigDecimal 是一个方便的方式,它可以自动处理数字的前置 0,并保留小数部分。
  2. 分离整数部分和小数部分

    • split("\\.") 方法将字符串按小数点分成整数部分和小数部分。
    • 如果没有小数点(如 "123456"),则只需处理整数部分。
  3. 格式化整数部分

    • 从右往左遍历整数部分的字符,每隔 3 个字符插入一个逗号。
    • 注意在第一个字符前不添加逗号。
  4. 重新组合结果

    • 如果存在小数部分,则将格式化后的整数部分与小数部分用小数点 . 拼接。
    • 如果没有小数部分,则直接返回格式化后的整数部分。

解释

输入示例 1:"1294512.12412"

  1. 去掉前导零:通过 BigDecimal 处理字符串 1294512.12412,去掉前导零后得到的是 1294512.12412,无需变动。

  2. 转换为普通字符串number.toPlainString() 将该数字转化为 1294512.12412 字符串。

  3. 分离整数和小数部分:通过 split("\\.") 分割字符串,得到整数部分 "1294512" 和小数部分 "12412"

  4. 添加千分位逗号

    • 从右向左遍历整数部分 "1294512",每3位插入一个逗号:
      • 第一轮:2"2"
      • 第二轮:1"21"
      • 第三轮:5"521"
      • 第四轮:4"4521"
      • 第五轮:9"94521"
      • 第六轮:2"294521"
      • 第七轮:1"1294521"
    • 结果为 "1,294,512"
  5. 拼接整数和小数部分:最终的结果是 "1,294,512.12412"

输出1,294,512.12412

输入示例 2:"0000123456789.99"

  1. 去掉前导零:通过 BigDecimal 处理字符串 0000123456789.99,去掉前导零后得到 123456789.99

  2. 转换为普通字符串number.toPlainString() 得到 123456789.99 字符串。

  3. 分离整数和小数部分:通过 split("\\.") 分割字符串,得到整数部分 "123456789" 和小数部分 "99"

  4. 添加千分位逗号

    • 从右向左遍历整数部分 "123456789",每3位插入一个逗号:
      • 第一轮:9"9"
      • 第二轮:8"89"
      • 第三轮:7"789"
      • 第四轮:6"6789"
      • 第五轮:5"56789"
      • 第六轮:4"456789"
      • 第七轮:3"3456789"
      • 第八轮:2"23456789"
      • 第九轮:1"1,234,567,889"
    • 结果为 "1,234,567,889"
  5. 拼接整数和小数部分:最终的结果是 "1,234,567,889.99"

输出1,234,567,889.99

输入示例 3:"987654321"

  1. 去掉前导零:通过 BigDecimal 处理字符串 987654321,没有前导零,结果是 987654321

  2. 转换为普通字符串number.toPlainString() 得到 987654321 字符串。

  3. 分离整数和小数部分:通过 split("\\.") 分割字符串,得到整数部分 "987654321" 和小数部分 ""(没有小数部分)。

  4. 添加千分位逗号

    • 从右向左遍历整数部分 "987654321",每3位插入一个逗号:
      • 第一轮:1"1"
      • 第二轮:2"21"
      • 第三轮:3"321"
      • 第四轮:4"4321"
      • 第五轮:5"54321"
      • 第六轮:6"654321"
      • 第七轮:7"7654321"
      • 第八轮:8"87654321"
      • 第九轮:9"987654321"
    • 结果为 "987,654,321"
  5. 拼接整数和小数部分:最终的结果是 "987,654,321"

输出987,654,321

代码

import java.math.BigDecimal;public class Main {public static String solution(String s) {// 去掉前置无效 0(使用 BigDecimal)BigDecimal number = new BigDecimal(s);String str = number.toPlainString(); // 转化为普通字符串,保留小数部分但无科学计数法// 分离整数部分和小数部分String[] parts = str.split("\\."); // 用 "." 分割字符串String integerPart = parts[0]; // 整数部分String decimalPart = parts.length > 1 ? parts[1] : ""; // 小数部分// 为整数部分添加千分位逗号StringBuilder formattedInteger = new StringBuilder();int count = 0;for (int i = integerPart.length() - 1; i >= 0; i--) {formattedInteger.append(integerPart.charAt(i));count++;if (count % 3 == 0 && i != 0) {formattedInteger.append(",");}}formattedInteger.reverse(); // 逆序还原// 拼接小数部分if (!decimalPart.isEmpty()) {return formattedInteger.toString() + "." + decimalPart;} else {return formattedInteger.toString();}}public static void main(String[] args) {// 测试用例System.out.println(solution("1294512.12412")); // 输出 '1,294,512.12412'System.out.println(solution("0000123456789.99")); // 输出 '1,234,567,889.99'System.out.println(solution("987654321")); // 输出 '987,654,321'}
}

提交结果

http://www.yayakq.cn/news/208865/

相关文章:

  • 建设微网站项目报告建设网站费用明细
  • 中海外交通建设有限公司网站市场营销计划方案
  • 有口碑的武进网站建设无锡百度网站推广渠道
  • 南宁网站推广系统代写文章的平台有哪些
  • 临沂h5建站南京企业网站建设
  • 做外贸的国际网站有哪些互联网个人信用信息服务平台
  • 域名做网站出售合法吗wordpress 免费博客
  • c2c电子商务网站需具备哪些业务功能网页制作教程课程报告
  • python如何建网站建设上海小程序开发费用
  • 易思网站管理系统wordpress的首页
  • 如何做相亲网站智慧团建官方登录
  • 深圳勘察设计协会网站岳阳建设网站哪家好
  • 婚嫁类网站制作视频的软件app免费
  • 北京市网站制作设计photoshop在线工具
  • 网站建设哪家网站建设好网站云主机吗
  • 商品网站wordpress用户创建页面
  • 做一些网站的弹出页面复杂的手游app要多少钱
  • 炫酷的企业网站模板免费下载信誉好的福州网站建设
  • 用网站模板 侵权 做了修改软件开发文档编写流程
  • wordpress 取消侧边栏北京网站优化经理
  • 什么网站可以做论文WordPress手机端底部悬浮窗
  • 台州响应式建站网站开发过滤器作用
  • 网站建设需要注意什么 知乎网站备案容易吗
  • 网站分为哪些部分组成部分组成西安做网站优化的公司
  • 淘宝客导购网站怎么做规划网站的总结
  • 松江泗泾网站建设php网站项目
  • 中山网站建设公司排名莱芜雪野湖鱼头
  • 淘宝做网站退款网站开发 就业简历模板
  • 建设商务网站广州番禺网站制
  • 网站建设推广合同书商丘三合一网站建设