Javascript计算每天的销售利润?[已关闭]

vjrehmav  于 2023-01-16  发布在  Java
关注(0)|答案(2)|浏览(144)

昨天关门了。
社区昨天讨论了是否重新讨论此问题,并将其关闭:
原始关闭原因未解决
Improve this question
我试着计算每天利润百分比,例如:
昨天我卖了10件,今天我卖了5件,所以百分比一定是-50%。
我已经设法取得了进展,但我相信我的计算中还漏掉了一些东西。
我的表快照:

当过去一天的销售项目为0时,进度变为无穷大。
下面是我javascript代码:

var class_name = ( parseFloat(row.total_sold)  > parseFloat( row.prev_total_sold ) ? `success` : `danger` ) ;
      class_name = ( parseFloat(row.total_sold)  == parseFloat( row.prev_total_sold ) ? `primary` : class_name) ;
      class_name = ( row.prev_total_sold == null ? `primary` : class_name) ;
    
  var percentage = ( ( (row.total_sold - row.prev_total_sold) / row.prev_total_sold) * 100).toFixed(1);

  return  `<span class="badge badge-light-${class_name} ">
                <i class="fa-solid fa-arrow-trend-up text-${class_name}" style="padding-right : 5px"></i> 
                  ${percentage}%
            </span>`

行查询:

    • prev_total_sold**=过去一天的售出商品价值
    • total_solded**=为当日销售商品总数

问题是:我的计算是否符合要求?为什么今天的销售额为0时,我会得到无限的值!

u5rb5r59

u5rb5r591#

这里的问题似乎是一个数学问题:0要乘多少次才能得到5?2答案是无穷大。
我的建议是检查prev_total_sold是否为0,然后使用默认值,如+100%
修改代码:

var percentage = row.prev_total_sold ? ( ( (row.total_sold - row.prev_total_sold) / row.prev_total_sold) * 100).toFixed(1) : '100.0';
uyto3xhc

uyto3xhc2#

由于基础数学的原因,你得到的是无穷大。为从0yy > 0)的增长指定一个百分比,将意味着存在满足以下等式的x

0 * x = y

不可能有这样的x,因为0 * something总是0。
显示infinity是在javascript中被零除时发生的次好的事情,其他语言可能会抛出异常,如果你想显示任何其他特殊值而不是infinity,你应该在除之前先检查是否prev_total_sold === 0 ...

var percentage = prev_total_sold === 0
  ? (total_sold === 0 ? "0.0" : "some default value")
  : (((row.total_sold - row.prev_total_sold) / row.prev_total_sold) * 100).toFixed(1);

相关问题