CSS不透明度定义为0.3但设置为0.30000001192092896

时间:2011-08-03 22:34:21

标签: html css

我有一个<input>元素,我设置了opacity: 0.3。但是,当我检查实际值时,我得到0.30000001192092896。见http://jsfiddle.net/85EPf/2/

为什么会出现这种差异?如果这不是错误,我如何预测其他值的差异?

3 个答案:

答案 0 :(得分:6)

这是另一个浮点数与十进制数舍入问题。请参阅"What Every Computer Scientist Should Know About Floating-Point Arithmetic"

你真的不需要关心这种差异。只知道对于浮点数,你不能完全表达0.3。 0.30000001192092896足够接近。

答案 1 :(得分:1)

计算机内二进制表示的浮点数并不准确。您的值0.30000001192092896是计算机最接近的二进制值0.3。

答案 2 :(得分:1)

正如其他人所说,这是floating-point numbers are approximations in JS(以及几乎所有其他计算机语言)的结果。

如果要根据值测试不透明度,请首先确定接近的距离。例如,这将测试它是否等于0.3,在3位小数之内:

if (300 == Math.round (opactityVal * 1000) ) {
    //-- Do something here.
}

另见Minimizing the effect of accuracy problems