合计行多位小数四舍五入转换,整数不转

这篇具有很好参考价值的文章主要介绍了合计行多位小数四舍五入转换,整数不转。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

合计行多位小数四舍五入转换,整数不转,java,javascript,开发语言文章来源地址https://www.toymoban.com/news/detail-700391.html

<el-table
      border
      id="tables"
      :data="dnDatas"
      show-summary
      max-height="400px"
      class="tables"
      @cell-click="editName2"
      :row-class-name="tableRowClassName2"
      :key="randomKey"
      :summary-method="getSummaries"
    >
   //特殊合计行计算方法  :summary-method="getSummaries"
    getSummaries(param) {
      const { columns, data } = param
      const sums = []

      columns.forEach((column, index) => {
        //第一个显示为合计
        if (index === 0) {
          sums[index] = '合计'
          return
        }


        const values = data.map((item) => item[column.property])
        //对表格数据进行循环
        values.map((item) => {
         //判断返回的是否为number数据类型,如店铺是数字但不需要合计计算,要单独处理
          if (typeof item === 'number' && item !== Infinity && !isNaN(item){
            //判断是否为时间戳
            if (item > 160000000000) {
              //若为时间戳则置为--
              sums[index] = '-'
              return
            } else {
              //对number数据进行累加
              sums[index] = values.reduce((prev, curr) => {
                const value = Number(curr)
                if (!isNaN(value)) {
                  //解决js计算小数出现小数点后多位数字的问题
                  // return Math.floor((prev + curr) * 100) / 100

                  return prev + curr
                } else {
                  return prev
                }
              }, 0)
            }
          } else {
            //不为number类型则置为--
            sums[index] = '-'
            return
          }
        })


		//毛利率单独计算而不是累加
        if (index == 7) {
          var num = sums[6] / sums[4]
          if (num != 0) {
            num = (num * 100).toFixed(2)  //值71431.145555555518四舍五入
            sums[index] = num
          } else {
            sums[index] = '0'
          }
        }
		//累加毛利率单独计算而不是累加
        if (index == 15) {
          var numlj = sums[14] / sums[12]
          if (numlj != 0) {
            numlj = (numlj * 100).toFixed(2)
            sums[index] = numlj
          } else {
            sums[index] = '0'
          }
        }
		
		//每列合计值要转换,调用通用方法,
        if (index == 4) {
          //有些列没有自动合计手动合计,将方法体的值传入外部
          this.countValue(4, sums, values, index)
        }

        if (index == 5) {
          this.countValue(5, sums, values, index)
        }

        if (index == 6) {
          this.countValue(6, sums, values, index)
        }

        if (index == 8) {
          this.countValue(8, sums, values, index)
        }
        if (index == 9) {
          this.countValue(9, sums, values, index)
        }

        if (index == 10) {
          this.countValue(10, sums, values, index)
        }

        if (index == 11) {
          this.countValue(11, sums, values, index)
        }

        if (index == 12) {
          this.countValue(12, sums, values, index)
        }

        if (index == 13) {
          this.countValue(13, sums, values, index)
        }

        if (index == 14) {
          this.countValue(14, sums, values, index)
        }

        if (index == 16) {
          this.countValue(16, sums, values, index)
        }

        if (index == 17) {
          this.countValue(17, sums, values, index)
        }
      })
      return sums
    },

    //将每列要转变的写一个共用方法
    countValue(i, sums, values, index) {
      //有些列没有自动合计手动合计
      if (sums[i] === '-') {
        sums[index] = values.reduce((prev, curr) => {
          const value = Number(curr)
          if (!isNaN(value)) {
            return prev + curr
          } else {
            return prev
          }
        })
      }
      //有些列有自动合计,对合计值是整数不做处理,小数四舍五入
      if (sums[i]) {
        if (parseInt(sums[i].toString()) == parseFloat(sums[i].toString())) {
          //整数
        } else {
          //console.log(sums[10] + '小数')
          //如果自动合计有值也是很长的小数时,需要四舍五入转换
          var numlj = sums[i]
          if (numlj != 0) {
            numlj = numlj.toFixed(2)
            sums[index] = numlj
          } else {
            sums[index] = '0'
          }
        }
      }
    },

到了这里,关于合计行多位小数四舍五入转换,整数不转的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elementui动态表单实现计算属性携带参数,并将计算出的值四舍五入保留两位小数

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 写项目的时候,遇到需要在动态表单中,将同一级输入框输入的内容计算出来,并动态显示,发现computer计算属性好像不能带参数,最后查了好多文档才解决,看下面简单案例 vue中computed计算属性无法直

    2024年02月14日
    浏览(27)
  • 【Python从入门到人工智能】16个必会的Python内置函数(4)——数据转换与计算 (详细语法参考+参数说明+具体示例) | 求和、四舍五入、幂运算的综合应用

      成长的标准就是,拒绝别人以后,没有任何的愧疚感。——萨特     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌟[2] 2022年度博客之星人工智能领域TOP4🌟   🏅[3] 阿里云社区特邀专家博主🏅   🏆[4] CSDN-人工智能领域优质

    2024年02月15日
    浏览(53)
  • 四舍五入(c++基础)

    题目描述: 给定一个实数x,求保留y位小数的结果。(x=1000,y=5,y为整数) 输入格式: 一行,两个数,以一个空格分开。 输出格式: 一个实数。 样例输入: 样例输出: 提示:  方法一(推荐): 使用c语言中printf语句。 printf(\\\"%0.*lf\\\",y,x) 表示输出x时保留y位小数(*会用后面的y替代)

    2024年02月14日
    浏览(32)
  • PHP 四舍五入实现方法

    1. PHP 实现四舍五入的函数为 round() ,语法格式如下: 返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。 四舍五入数字到两位小数、设置负数: 除了使用 round() 方法外,我们还可以使用 sprintf() 方法来

    2024年02月12日
    浏览(44)
  • Python实现真正的四舍五入

    Python 内置的函数 round() 能够大致实现四舍五入的功能,但会存在部分场景不适用,比如: 网上搜了一圈,只找到了 Decimal 的替代解决方法,但看了貌似比较复杂,经过思考一番,只有遇到尾数为 5 的情况下,才会计算有偏差,那直接把 5 加 1 变成 6,不就可以轻松解决了

    2024年02月11日
    浏览(35)
  • Java中的取整、四舍五入

    目录 1、直接强制转换--取整 2、Java提供的函数  参考文献 结果: 直接用强制转换的方式将浮点型数据转换为整型时, 直接去掉小数点后部分的精度,取整数部分 ; 直接强制取整有精度风险 一方面是小数位损失 另一方面当浮点型数字超过整型数字最大值时,会发生溢出 实

    2024年02月14日
    浏览(28)
  • 语法-Java四舍五入等详解

    long round(double d) int round(float f) ​ Math.round()是Java中经典的舍入数字方法, 它返回的是整数 ,也就是说对浮点数四舍五入成整数。 ​ Java的最佳实践是优先使用BigDecimal而不是Math.round()来对Java的数字进行四舍五入。每当需要将数字四舍五入到小数点后n位时,首先考虑BigDecimal。

    2024年02月15日
    浏览(27)
  • C# 四舍五入 MidpointRounding.AwayFromZero

    四舍五入 在计算中 经常使用到,但是如果使用 Math.Round,只是五舍六入 在Math.Round内传入MidpointRounding.AwayFromZero枚举,就可以实现四舍五入的效果了, C#文档 https://docs.microsoft.com/zh-cn/dotnet/api/system.midpointrounding?view=net-6.0#system-midpointrounding-awayfromzero

    2024年02月13日
    浏览(39)
  • java四舍五入方法的基础学习

    以下均为自己的学习复习资料,如有不对的地方请发在评论区中,我会仔细思考并作出修改,大家共同学习,谢谢! 主要资料可以从java.base (Java SE 17 JDK 17) (oracle.com)(java文档)中查找到 四舍五入分为三种: 向上取整 、 向下取整 、 四舍五入 。 先给实例再谈理解: 向上取整

    2024年02月07日
    浏览(28)
  • java实现BigDecimal/int四舍五入

    输出结果: 四舍五入(保留位后一位是5进位) = 2.4 四舍五入(保留位后一位是5舍弃) = 2.3 四舍五入(保留位是奇数) = 4.6 四舍五入(保留位是偶数) = 4.4 进位 = 2.4 说明: ROUND_CEILING Rounding mode to round towards positive infinity. 向正无穷方向舍入 ROUND_DOWN Rounding mode to round towards zero. 向零方向

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包