excel - 除法结果为0
问题描述
它可能看起来很愚蠢,但是当我将 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
解决方案
关于上面 Scott Craner 评论的解释:
Double
(and Float
) 有小数点。Long
没有。Long
简直就是大了Integer
。
因此,如果我采用A/B
andA = 1
和B = 2
and 定义两者A
,B
那么Long
结果将是0
。
如果我定义A
, B
asDecimal
那么答案将是0.5
(如您所想)。一旦你定义了一个类型(正如你在上面所做的那样)并且它是设计使然,这种行为存在于类型化的编程语言中。2.4
有些东西(人类、汽车)在小数点之后并不能传达真正的含义(每个家庭都有孩子是什么意思?)。
如有疑问,请始终检查您正在使用的编程语言中可用的数据类型。你会惊讶于这个讨论会把你带到哪里。
推荐阅读
- javascript - 组件内部的反应组件不起作用
- node.js - 错误:找不到模块“/workspace/server.js”
- combinations - Tableau 组合图表与“假”目标数字交互?
- python - RecursionError:超出最大递归深度,同时访问数据帧
- sql - Presto 查询:将多行连接成一个字符串
- angular - 如何将变量的类类型转换为Angular中的Observable
- javascript - JQuery 没有得到表单输入值
- java - Edge 浏览器中的 Selenium Web 驱动程序测试引发空指针异常
- excel - 在 Excel 中链接 Activex 文本框,以便文本在 textbox1 到 textbox2 之间流动
- android - Android Studio 上的蓝牙 UUID API 随机动作