【发布时间】:2017-05-23 12:36:13
【问题描述】:
使用 MS Excel 的 Hex2Oct 将十六进制值“FFFFFFFF00”转换为八进制值时,应按照here 中提到的规则返回“错误字符串”:
如果 number 为负数,HEX2OCT 会忽略位置并返回一个 10 字符的八进制数。
数字为负数,不能小于FFE0000000,数字为正数,不能大于1FFFFFFF。
如果 number 不是有效的十六进制数,HEX2OCT 返回 #NUM!错误值。
如果 HEX2OCT 需要多个字符,则返回 #NUM!错误值。
如果places 不是整数,则将其截断。
如果places 不是数字,HEX2OCT 返回#VALUE!错误值。
如果 places 是负数,HEX2OCT 返回 #NUM!错误值。
但它在不考虑链接中提到的规则/备注的情况下计算并返回为“7777777400”。
例如:
在计算 HEX2OCT 时,
根据 Excel 规则,如果数字为正数,则不能大于 1FFFFFFF(hex)3777777777(oct)536870911(decimal)。
但是在计算 FFFFFFFF00(hex) 7777777400(oct) 1099511627520(decimal) 的 HEX2OCT 时。
这里的十六进制值 FFFFFFFF00 大于 1FFFFFFF,但是 MS Excel 不返回错误字符串,而是返回转换后的八进制值。
谁能解释一下原因?
【问题讨论】:
标签: excel excel-formula excel-2010 vba