vba - 对浮点进行平方会产生“负零”并使 MDeterm 崩溃
问题描述
输入以下数组时,通过 Excel VBA 调用的 Worksheetfunction.MDeterm(矩阵行列式)崩溃(运行时错误 1004)
Sub test()
Dim a
a = Array( _
Array(0#, 0#), _
Array(-0#, 0#) _
)
MsgBox WorksheetFunction.MDeterm(a)
End Sub
注意:'#'表示Double类型,第二行第一列有一个带符号的零。
为什么我需要-0
?
我没有,但早些时候(显然,为了简洁起见,我没有在这里包含整个代码)我进行了一个计算,我将一个数字平方并取反。比如-5^2=-25。由于这种平方,数字会自动转换为 Double。使用“^”运算符或 Worksheetfunction.Power 都没关系。无论如何,它必须是一个浮点数。
为什么我不写x*x
??x ^ 2
因为 myx
是一个很长的表达式,写两次看起来很丑。
值得注意的是,当负零位于矩阵中的其他 3 个位置中的任何一个时,该函数不会崩溃。这是唯一的解决方法吗?:
If a(1,0) = 0 Then ' True if zero or negative zero
a(1,0) = 0 ' assigns an unsigned zero
End If
解决方案
推荐阅读
- angular - 强制离子应用程序仅在桌面平台上使用
- c# - 起订量设置可以将列表对象识别为相同吗?
- reactjs - 无法从 React 应用程序中的 Redux 存储读取数据
- python - 如何让 API 密钥消息离开 TinyMCE?(姜戈)
- python - Kivy 抛出错误:不允许使用虚拟键盘、单一模式、未停靠和未打开 TextInput 小部件的键盘
- python - 在python中将datetime.date或字符串转换为时间戳
- reactjs - 反应值在表中相乘
- asp.net-mvc - 强制用户检查 ASP.NET MVC 中的复选框
- python - 正则表达式:查找包含“a”、“b”且不包含“c”的字符串
- javascript - 如何检查字符串是否包含某个字母,后跟除自身或元音以外的任何字母?