CSS指数

时间:2014-04-10 16:24:20

标签: javascript html css arrays

我的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

1 个答案:

答案 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);

但先试试。