diff --git a/packages/csv-parse/lib/api/index.js b/packages/csv-parse/lib/api/index.js index 8f69bf98d..ca97838cd 100644 --- a/packages/csv-parse/lib/api/index.js +++ b/packages/csv-parse/lib/api/index.js @@ -775,7 +775,7 @@ const transform = function (original_options = {}) { } } if (this.__isFloat(field)) { - return [undefined, parseFloat(field)]; + return [undefined, Number(field)]; } else if (this.options.cast_date !== false) { const info = this.__infoField(); return [undefined, this.options.cast_date.call(null, field, info)]; diff --git a/packages/csv-parse/test/option.cast.ts b/packages/csv-parse/test/option.cast.ts index 33ad94622..bfb1db11e 100644 --- a/packages/csv-parse/test/option.cast.ts +++ b/packages/csv-parse/test/option.cast.ts @@ -58,6 +58,13 @@ describe("Option `cast`", function () { }); }); + it("hex, octal and binary literals", function (next) { + parse("0x10,0o17,0b11,0x", { cast: true }, (err, records) => { + if (!err) records.should.eql([[16, 15, 3, "0x"]]); + next(err); + }); + }); + it("float", function (next) { parse( "123a,1.23,0.123,01.23,.123,123.",