除法结果为0

时间:2019-05-14 20:36:33

标签: excel vba

它可能看起来很愚蠢,但是当我将11950除以47086514时,结果为0。

这是我尝试过的:

Dim total, share As Long
Dim split1 As Variant
split1 = Array(size1)

For i = 1 To size1 - 6
    split1 = Split(vetA(i), ":") 'vetA(1) = 11950 and total = 47086514
    share = CLng(split1(1)) / total
    ws.Cells(i + 4, 16).Value = share
Next i

1 个答案:

答案 0 :(得分:2)

以上关于Scott Craner的解释说明: Double(和Float)有一个小数点。 Long没有。 Long只是更大的Integer

因此,如果我采用A/BA = 1B = 2并将AB都定义为Long,那么结果将是{ {1}}。

如果我将0A定义为B,那么答案将是Decimal(如您所想)。 一旦定义了一种类型(如上所示),并且是设计使然,这种行为就存在于所有类型的编程语言中。有些东西(人,汽车)没有传达超出小数点的真实含义(每个家庭有0.5个孩子是什么意思。)

如有疑问,请始终检查所用编程语言中可用的数据类型。 this discussion可能带您到来。