【发布时间】:2013-09-30 19:47:38
【问题描述】:
我理解二进制,但我不理解十六进制。
这里有一些例子:
Number(0.15).toString(16) // 0.26666666666666
Number(1.5).toString(16) // 1.8
Number(.18).toString(16) // 0.2e147ae147ae14
看起来十进制在转换为十六进制时增加了大约 40%,当你从 10 到 16 时这真的没有意义。它应该像整数一样下降,对吧?
如果正确/不正确:您如何手动执行此操作?我完全理解转换整数,但是当 dec 值为小数时,我还没有找到将 dec 转换为十六进制的来源。
【问题讨论】:
-
您所看到的是二进制数的十六进制表示 - 这通常是“与数字中的位数一样多”。大多数小数不能完全表示为二进制数。因此,您会看到“尽可能多地显示”。如果您以十进制打印数字
0.18,您会看到它一直在继续。 -
@Floris 我不确定这是否是完整的解释。这不像价值观是“一点点”。相反,“看起来小数转换为十六进制时增加了大约 40%”.. 那么 是 非整数转换的规则是什么?
-
@Floris 所以它本质上是转换为二进制,然后采用 4 组并直接转换为十六进制,对吗? 3.625 = 11.101 二进制,但由于这只是小数点后的一组 3,因此将其更改为 11.1010,进而变为十六进制的 3.A。这就是它的工作方式,但这实际上在数学上是正确的吗?我认为十六进制不应该高于十进制。
-
是的,这是正确的。 DesertIvy 的回答很好地解释了这一点。
标签: javascript tostring