Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在Chrome 49中,数字的toString()返回更长的字符串?_Javascript_Google Chrome - Fatal编程技术网

Javascript 为什么在Chrome 49中,数字的toString()返回更长的字符串?

Javascript 为什么在Chrome 49中,数字的toString()返回更长的字符串?,javascript,google-chrome,Javascript,Google Chrome,我刚刚注意到Math.random().toString(36)在Chrome49中返回的字符串比Node5.9或Safari9.1长 游猎 铬49 注意:这不是关于Math.random。在Chrome 49中,任何数字转换为以10以外的任何基数(基数)表示的字符串时,返回的字符串比Safari大得多: 游猎 发生什么事了经过一点测试,我确信这是chrome中的一个缺陷,对于某些碱基来说,最常见的碱基似乎没有问题,而不常见的碱基有时只是长度上的荒谬。下面是一个带有不同长度日志的快速JSBin

我刚刚注意到
Math.random().toString(36)
在Chrome49中返回的字符串比Node5.9或Safari9.1长

游猎 铬49

注意:这不是关于
Math.random
。在Chrome 49中,任何数字转换为以10以外的任何基数(基数)表示的字符串时,返回的字符串比Safari大得多:

游猎
发生什么事了

经过一点测试,我确信这是chrome中的一个缺陷,对于某些碱基来说,最常见的碱基似乎没有问题,而不常见的碱基有时只是长度上的荒谬。下面是一个带有不同长度日志的快速JSBin:

-(在各种浏览器中尝试)

ECMA 5.1规范的更多内容包括:

。。。。如果基数不是10,则精确算法取决于实现,但该算法应是9.8.1中规定的算法的推广

我真的不知道这里还会发生什么。但这看起来更像是chrome具体实现的算法问题


*请原谅我的变量,它只用于登录JSBin。

这似乎只是一个提高精度的问题。e、 g.
1.5.toString(8)
按预期工作(
1.4
)。我不知道为什么Chrome会选择如此惊人的精确,尽管…
toString(n)
output是特定于供应商的。你将两个浏览器中的随机值与Chrome中的一个固定数字进行比较,这不是一个整洁的测试。所有引擎都在同一操作系统上运行吗?
> Math.random().toString(36)
< "0.ivmamr8qidc" = $1
> Math.random().toString(36).length
< 12 = $2
> process.version
'v5.9.1'
> Math.random().toString(36)
'0.efjsrk5vrucsdcxr'
> Math.random().toString(36).length
18
> 0.05986301500440483.toString(36)
"0.25kyvln343abt9usp7thdunmi"
> Math.random().toString(36).length
28
> 0.3.toString(11)
< "0.3333333333333333" = $3
> 0.3.toString(11)
"0.33333333333333326157299268964aa565025a1144557416824326113516284528415692759737689558662a213684953041133490a150361056078529388624a6a95140066041152159194505728108268409453322a67850a92802aa020416578a21776a17a9597a008942a33344a987a722818a995915441aaa138356487483041a8a037765398541258a129423750a196266713086883273a32338000a969744a80121651a43094a436447466473193012044680270753658119189443226363898951aaa2609388078443a45888122a267a250699383701744a42a46740085019817923897897064746376425100961478677938aa1362825a2aa025317275a462740a615586933734946aa696449358972158a81891a247783970290317a2a3850658423343543634788830516939282a0621473619a878519a550102aa63989123430969406321554746982403894531491854919a5131341277902253a163136367215309647141444a6613a4999717880973a9626a90139a747188035a4565448938098960277046602486a2670a480090985a833179882708959744343031053aa84003051a7aa213409a052287587859372843879a77419001a1034828962548225876270737363a2590173794295a692243041469261a1468303153492137a6576155a276a5272a3807220204415092553212a020403960a1838347778678826885246195448a77419353738508aa3089972946871786aa811658725243984a"
var a = Math.random().toString(2).length; // 53 (doesn't totally jive with my theory) 
var b = Math.random().toString(8).length; // 19
var c = Math.random().toString(10).length; // 18
var d = Math.random().toString(16).length; //15

var e = Math.random().toString(4).length; // 28
var f = Math.random().toString(11).length; // 1101 ?
var g = Math.random().toString(36).length; // 27
var h = Math.random().toString(3).length; // 1101 ?
var i = Math.random().toString(17).length; // 1101 ?
var j = Math.random().toString(32).length; // 13
var k = Math.random().toString(12).length; // 28