【发布时间】:2021-06-26 12:33:27
【问题描述】:
我最近发现您可以在带有基数的 JS 中对浮点数调用 toString(),但我对它的实现感到困惑。例如,JS 中的3.1459.toString(16),返回3.2559b3d07c84c。从我的测试来看,数字部分似乎是到等效基数的直接转换,但这不适用于小数部分?字符究竟是如何确定的?
我在 V8 中找到了我认为的 source。它类似于 cmets 中关于将分数转换为十六进制的内容,但存在额外的舍入和精度差异。
【问题讨论】:
-
这个问题是关于 JavaScript 还是 C#?如果问题是关于
toString对Number值的实现,我们并不关心您是否尝试移植到 C#,除非您只想要 C# 代码方面的答案。 -
对不起,含糊不清,我不介意代码,但我删除了 C# 标签,因为它更适合 JS 本身。
-
MDN 上没有任何关于如何转换小数的详细信息。查看the spec 它说“精确算法是实现定义的,但是该算法应该是 6.1.6.1.20 中指定的算法的概括。”并链接到this section 但我去斗鸡眼试图阅读和理解它。
-
有点相关 - 最近有一个关于规范的那部分的问题:Number::toString() abstract operation。但是,到目前为止还没有答案。
-
另一个相关问题,与语言无关的问题:How to convert decimal fractions to hexadecimal fractions?
标签: javascript node.js