非正常情况下的移动加权平均算法

什么叫移动加权平均法?

百度上的解释:移动加权平均法是指以每次进货的成本加上原有库存存货的成本,除以每次进货数量与原有库存存货的数量之和,

据以计算加权平均单位成本,以此为基础计算当月发出存货的成本和期末存货的成本的一种方法。

这只能说是正常使用情况下的(或者说书面上理想情况下的)移动加权平均算法。

这种算法是建立在先进货(有了库存成本),后销售的条件上才能计算。

什么叫非正常情况?

因为有“先卖后进”的现象存在。商品没有进货,就要销售。这时,商品资料不完善(商品只有售价,没有进价,没有库存数量),商品就要售卖。

商品每销售一个就减少一个库存数量,因为没有进货,所以商品的库存数量会出现“负库存”。

销售的时候不知道销售成本价。

非正常情况下如何计算商品的移动加权平均价(以下简称平均价)?

要分3种情况:

1)当商品的原平均价=0,商品的平均价=本次进货成本价

2)当商品的原平均价为NULL(商品未初始化过,故平均价为NULL),商品的平均价=本次进货成本价

3)当商品的原平均价>0,(原平均价*库存数量+本次进货成本)/(库存数量+本次进货数量)

库存数量=原库存数量+本次进货数量

库存成本=平均价*库存数量

时间: 2024-08-04 18:48:50

非正常情况下的移动加权平均算法的相关文章

nfs非正常情况下断开,无法重新挂载,且无法使用df -h 命令的解决方法

问题解决思路:1.强制取消客户端挂载(此处需要注意方法)2.重启NFS服务,客户端和服务端都需要重启3.重新挂载NFS 处理方法: 重启NFS服务,客户端和服务端都需要重启 service rpcbind restart service nfs restart 重新挂载NFS mount -t nfs 172.16.1.31:/data /mnt 原文地址:https://blog.51cto.com/14078730/2411965

冒泡法的算法最佳情况下的时间复杂度为什么是O(n)

我在许多书本上看到冒泡排序的最佳时间复杂度是O(n),即是在序列本来就是正序的情况下. 但我一直不明白这是怎么算出来的,因此通过阅读<算法导论-第2版>的2.2节,使用对插入排序最佳时间复杂度推算的方法,来计算冒泡排序的复杂度. 1. <算法导论>2.2中对插入排序最佳时间复杂度的推算 在最好情况下,6和7总不被执行,5每次只被执行1次.因此, 时间复杂度为O(n) 2. 冒泡排序的时间复杂度 2.1 排序代码 public void bubbleSort(int arr[]) {

MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?

本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的方案,因为现实中很多情况都不是固定不变的,能总结出来通用性的做法或者说是规律,是要考虑非常多的场景的,同时,面对能够达到优化的方式要追究其原因,同样的做法,换了个场景,达不到优化效果的,还要追究其原因.个人对此场景在不用情况表示怀疑,然后自己测试了一把,果然发现一些问题,同时也证实了一些预期的想法.

[算法]体积不小于V的情况下的最小价值(0-1背包)

题目 0-1背包问题,问要求体积不小于V的情况下的最小价值是多少. 相关 转移方程很容易想,初始化的处理还不够熟练,可能还可以更简明. 使用一维dp数组. 代码 import java.util.Scanner; public class Main{ public static void main(String args[]) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int V = sc.nextInt(); in

C++对象模型——&quot;无继承&quot;情况下的对象构造(第五章)

5.2 继承体系下的对象构造 当定义一个object如下: T object; 时,实际上会发生什么事情呢?如果T有一个constructor(不论是由user提供或是由编译器合成),它会被调用.这很明显,比较不明显的是,constructor的调用真正伴随了什么? constructor可能内带大量的隐藏码,因为编译器会扩充每一个constructor,扩充程度视 class T的继承体系而定.一般而言,编译器所做的扩充操作大约如下: 1.记录在member initialization li

高并发情况下Linux系统及kernel参数优化

众所周知在默认参数情况下Linux对高并发支持并不好,主要受限于单进程最大打开文件数限制.内核TCP参数方面和IO事件分配机制等.下面就从几方面来调整使Linux系统能够支持高并发环境. Iptables相关 如非必须,关掉或卸载iptables防火墙,并阻止kernel加载iptables模块.这些模块会影响并发性能. 单进程最大打开文件数限制 一般的发行版,限制单进程最大可以打开1024个文件,这是远远不能满足高并发需求的,调整过程如下: 在#号提示符下敲入: # ulimit–n 6553

(hdu step 3.2.4)FatMouse&#39;s Speed(在第一关键字升序的情况下,根据第二关键字来求最长下降子序列)

在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1034 Accepted Submission(s): 526   Proble

什么情况下使用large training data会非常有效

收集大量的数据可能比算法的优劣更重要 Banko和Brill在2001年做了一个研究,是关于在句子中对易混单词进行识别,画出了上图的右边的那个图,这个图显示了对于不同的算法,它们的表现相似,但是随着training set size的增加,不同的算法的性能都增加.这个说明了一个较劣势的算法,如果它有大量的数据的话,在这个例子中,它的表现会对优秀的算法只有少量的数据要好.了解到这个情况,我们就知道了,在特定的情况下(数据量的提升对改进算法有效),我们应该把精力放在收集大量的数据上,而不是用来选择某

编写高质量代码改善C#程序的157个建议——建议16:元素数量可变的情况下不应使用数组

建议16:元素数量可变的情况下不应使用数组 在C#中,数组一旦被创建,长度就不能改变.如果我们需要一个动态且可变长度的集合,就应该使用ArrayList或List<T>来创建. 而数组本身,尤其是一维数组,在遇到要求高效率的算法时,则会专门被优化以提升其效率.一维数组也成为向量,其性能是最佳的,在IL中使用了专门的指令来 处理它们(如newarr.ldelem.ldelema.ldelen和stelem). 从内存的使用角度来讲,数组在创建时被分配了一段固定长度的内存.如果数组的元素是值类型,