我有一个<input>
元素,我设置了opacity: 0.3
。但是,当我检查实际值时,我得到0.30000001192092896。见http://jsfiddle.net/85EPf/2/
为什么会出现这种差异?如果这不是错误,我如何预测其他值的差异?
答案 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.
}