diff --git a/packages/scratch-vm/src/util/cast.js b/packages/scratch-vm/src/util/cast.js index af624a30fa0..8857fc5eda4 100644 --- a/packages/scratch-vm/src/util/cast.js +++ b/packages/scratch-vm/src/util/cast.js @@ -167,7 +167,12 @@ class Cast { return true; } else if (typeof val === 'string') { // If it contains a decimal point, don't consider it an int. - return val.indexOf('.') < 0; + if (val.toLowerCase().split('e').length === 2) { + return Number(val) === parseInt(Number(val), 10); + } else { + // If it contains a decimal point, don't consider it an int. + return val.indexOf('.') < 0; + } } return false; } diff --git a/packages/scratch-vm/test/unit/util_cast.js b/packages/scratch-vm/test/unit/util_cast.js index d3ca0c308dd..99f3a5e0a02 100644 --- a/packages/scratch-vm/test/unit/util_cast.js +++ b/packages/scratch-vm/test/unit/util_cast.js @@ -151,7 +151,7 @@ test('isInt', t => { t.equal(cast.isInt('0'), true); t.equal(cast.isInt('1'), true); t.equal(cast.isInt('0.0'), false); - t.equal(cast.isInt('0.1e10'), false); + t.equal(cast.isInt('0.1e10'), true); t.equal(cast.isInt('3.14'), false); // Boolean