• 带小数点的String类型数据,如何只取整数?


    一、场景引入

            如果前端页面存在列表展示用户数据,但是用户数据存在非常多的小数位,从页面来看,数据太多就会不太美观,因此,出于场景美化考虑,在不影响业务功能的情况下,可以只展示整数内容;

    二、具体实现

    1、使用Decimal.format()来进行转换

    1. @Test
    2. public void test1(){
    3. DecimalFormat decimalFormat = new DecimalFormat("0");
    4. String price = "10086.112";
    5. Double priceDou = Double.parseDouble(price);
    6. //注意,方法的返回值是一个String类型数据
    7. String priceFormat = decimalFormat.format(priceDou);
    8. System.out.println(priceFormat.concat("元"));
    9. }

    本地演示操作结果: 

    注意:此种方法只会直接拿到整数部分,并且返回值为String,小数部分会直接丢失;

    2、借助Double的intValue()方法

    1. @Test
    2. public void test2(){
    3. String price = "10086.112";
    4. String percent = "10086.303";
    5. String cash = "10086.600";
    6. Double priceDou = Double.parseDouble(price);
    7. Double percentDou = Double.parseDouble(percent);
    8. Double cashDou = Double.parseDouble(cash);
    9. int priceInt = priceDou.intValue();
    10. int percentInt = percentDou.intValue();
    11. int cashInt = cashDou.intValue();
    12. System.out.println(priceInt);
    13. System.out.println(percentInt);
    14. System.out.println(cashInt);
    15. }

    注意:在此种方法当中,也是会将小数部分直接丢弃,不会涉及到数据的四舍五入;

    3、借助Math.round()方法--可以四舍五入

     

    1. @Test
    2. public void test3(){
    3. String price = "10086.112";
    4. String percent = "10086.303";
    5. String cash = "10086.600";
    6. //先将String转换成number
    7. Double priceDou = Double.parseDouble(price);
    8. Double percentDou = Double.parseDouble(percent);
    9. Double cashDou = Double.parseDouble(cash);
    10. //对number进行四舍五入转换,此时已经是个长整型的数据
    11. long priceL = Math.round(priceDou);
    12. long percentL = Math.round(percentDou);
    13. long cashL = Math.round(cashDou);
    14. //取整
    15. int priceInt = Integer.parseInt(String.valueOf(priceL));
    16. int percentInt = Integer.parseInt(String.valueOf(percentL));
    17. int cashInt = Integer.parseInt(String.valueOf(cashL));
    18. System.out.println("periceInt: "+priceInt+"\npercentInt: "+percentInt+"\ncashInt:"+cashInt);
    19. }

    控制台显示结果:

    4、借助bigDecimal对象的setScale(需要保留的小数位,转换的规则)方法,四舍五入取整

    1. @Test
    2. public void test4(){
    3. String price = "10086.112";
    4. String percent = "10086.303";
    5. String cash = "10086.600";
    6. //四舍五入
    7. BigDecimal priceBig = new BigDecimal(price).setScale(0, BigDecimal.ROUND_HALF_UP);
    8. BigDecimal percentBig = new BigDecimal(percent).setScale(0,BigDecimal.ROUND_HALF_UP);
    9. BigDecimal cashBig = new BigDecimal(cash).setScale(0,BigDecimal.ROUND_HALF_UP);
    10. //先将bigDecimal的变量转换成String,再转换成int取整
    11. int priceInt = Integer.parseInt(String.valueOf(priceBig));
    12. int percentInt = Integer.parseInt(String.valueOf(percentBig));
    13. int cashInt = Integer.parseInt(String.valueOf(cashBig));
    14. System.out.println("periceInt: "+priceInt+"\npercentInt: "+percentInt+"\ncashInt:"+cashInt);
    15. }

     控制台结果:

     

  • 相关阅读:
    [Spring] @Bean 修饰方法时如何注入参数
    用户登录程序需求
    Anaconda下 Prophet的安装,pystan和fbprophet的版本问题
    基于多模态脑机接口的智能小车自动驾驶系统
    pytorch.数据结构Tensor
    【Linux command 05】seq Command on Linux
    react使用OpenLayers实现类似船某网在地图放大时展示具体船舶符号缩小时显示聚合小点效果
    java计算机毕业设计项目任务管理系统源码+系统+数据库+lw文档+mybatis+运行部署
    Vue源码探秘(一)——Vue-Router原理实现
    汽车疲劳测试试验平台技术要求(北重厂家)
  • 原文地址:https://blog.csdn.net/2301_78149288/article/details/137940762