float と定数の比較
by zenith6
HTML
<script src="//code.jquery.com/qunit/qunit-1.14.0.js"></script>
<link rel="stylesheet" href="//code.jquery.com/qunit/qunit-1.14.0.css">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
JavaScript
function a(v) { return v + 0.1; }
function b(v) { return v + 0xdeadbeef; }
test('失敗する', function () {
var expected = 0.3;
var actual = a(0.2);
equal(expected, actual);
});
test('イプシロンで比較', function () {
var epsilon = Number.EPSILON || 2.2204460492503130808472633361816E-16;
var expected = 0.3;
var actual = a(0.2);
ok(Math.abs(expected - actual) < epsilon);
});
test('イプシロンで比較(失敗した時に何が違うのか判らない;;)', function () {
var epsilon = Number.EPSILON || 2.2204460492503130808472633361816E-16;
var expected = 0.3;
var actual = b(0.2);
ok(Math.abs(expected - actual) < epsilon);
});
test('期待値を定数にする必要なんてなかった', function () {
var expected = 0.2 + 0.1;
var actual = a(0.2);
equal(expected, actual);
});