我的javascript代码适用于双打,当我将数组转换为字符串时,我会得到以下结果:transform: matrix3d(1, 0, 0, 0, 0, -1, 1.2246468525851679e-16, 0, 0, -1.2246468525851679e-16, -1, 0, 0, -1.224646841997256e-14, -100, 1);
这在css中不起作用,因为1.224646841997256e-14
在CSS中无效。
var toStr = function (a) {
return 'matrix3d(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' +
a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' +
a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' +
a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')';
};
我该如何解决?
Number.toFixed有效,但我必须给出一个数字,字符串非常大。例如(1.0).toFixed(16)==1.0000000000000000
答案 0 :(得分:4)
您需要做的是预处理a
数组以生成有效的CSS值数字(无指数表示法)。
限制是由matrix3d
中使用的参数的CSS规范引起的
功能,见:
https://developer.mozilla.org/en-US/docs/Web/CSS/number
您使用.toFixed()
功能走在正确的轨道上,请参阅:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed
在您的情况下,如果您想要简单的整数或几个小数位,请根据应用程序将数字固定为0长度。
请注意,出于所有实际目的,1.2246468525851679e-16
等数字基本上是0.0
。您不需要16位小数的精度。
我认为语法可能很简单(对于4位小数):
(a[6]).toFixed(4);
但先试试。