转换度量范围-四舍五入

时间:2018-09-20 07:20:33

标签: python math

我有一个尝试在Odoo 10中复制的旧程序。我被卡住,将四舍五入转换为平方米。这是用于地毯卷。地毯的宽度为4M,房间宽度为9x5M。要获得SQ米,我将“房间宽度”乘以“房间长度”乘以45平方米,然后除以4,即“线性”地毯的宽度为11.25。

线性是11.25,但我不知道它们如何得到15。供应商不想切割地毯,因此程序正在根据地毯的宽度进行某种四舍五入或计算。要获得所需的平方单位,请乘以线性x宽度(15x4 = 60)
(图片中的地板宽度文本应为地毯宽度) enter image description here

我正在使用下面的代码来获取Room的平方,但甚至无法算出数学来尝试线性转换。

@api.onchange('roomwidth')
    def _onchange_squaremtr(self):
        self.sqfeet = (self.roomwidth or 1) * (self.roomlength or 1)



    @api.onchange('roomlength')
    def _onchange_roomlenght(self):
        self.sqfeet = (self.roomwidth or 1) * (self.roomlength or 1)

这是另一个例子。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

它们只是沿短边填充房间矩形(也许是制造较短的部分,而不是较长的部分)。

w = 4,房间9x5:三张A = 4x5,B = 4x5,C = 4x5并切成最后一个以制作4x1波段

 A A A A A
 A A A A A
 A A A A A
 A A A A A  
 B B B B B
 B B B B B
 B B B B B
 B B B B B
 C C C C C
 ---------  cut
 C C C C C
 C C C C C
 C C C C C

w = 6,房间13x8:三张A = 6x8,B = 6x8,C = 6x8并切成最后一个以制作6x1波段

import math
def calccarpet(wdt, roomwdt, roomhgt):
    longer = max( roomwdt, roomhgt)
    shorter = min( roomwdt, roomhgt)
    numpieces = math.ceil(longer / wdt)
    carpetarea = numpieces * wdt * shorter
    return carpetarea

print(calccarpet(4, 5, 9))
print(calccarpet(6, 13, 8))
>>> 
60
144

答案 1 :(得分:0)

该方案中必须有一个“允许x%浪费”的因素。即使只需要地毯,面积仅为45平方米。单位,但我们需要添加浪费数量百分比。

例如宽度= 9长度= 5

平方单位= 9 * 5 = 45

总平方英尺= 45 +(45 * X%)/ 100 = 60平方英尺单位

这里X(Allow Wastage)= 33.33%

请检查是否有浪费量裕度。