*Intend to Ship: Locale sensitive BigInt.prototype.toLocaleString & allow Intl.NumberFormat format/formatToParts to take BigInt*
Spec https://github.com/tc39/ecma402/pull/236 Summary A Stage 3 Pull Request to change the ECMA402 that support locale sensitive BigInt.prototype.toLocaleString to format the BigInt and also allow Intl.NumberFormat.prototype.format and Intl.NumberFormat.prototype.formatToParts to take BigInt as value. Example BigInt(12345678901234567890).toLocaleString("de") // "12.345.678.901.234.567.168" 12345678901234567890n.toLocaleString("en") // "12,345,678,901,234,567,168" 12345678901234567890n.toLocaleString("hi") // "1,23,45,67,89,01,23,45,67,168" 12345678901234567890n.toLocaleString("fa") // "۱۲٬۳۴۵٬۶۷۸٬۹۰۱٬۲۳۴٬۵۶۷٬۱۶۸" 12345678901234567890n.toLocaleString("fr") // "12 345 678 901 234 567 168" 12345678901234567890n.toLocaleString("th-Thai") // "12,345,678,901,234,567,168" 12345678901234567890n.toLocaleString("th-u-nu-Thai") // "๑๒,๓๔๕,๖๗๘,๙๐๑,๒๓๔,๕๖๗,๑๖๘" let nf = new Intl.NumberFormat("hi"); nf.format(12345678901234567890n); // "1,23,45,67,89,01,23,45,67,168" nf.formatToParts(12345678901234567890n); // [{type: "integer", value: "1"}, // {type: "group", value: ","}, // {type: "integer", value: "23"}, // {type: "group", value: ","} // {type: "integer", value: "45"}, // {type: "group", value: ","}, // {type: "integer", value: "67"}, // {type: "group", value: ","}, // {type: "integer", value: "89"}, // {type: "group", value: ","}, // {type: "integer", value: "01"}, // {type: "group", value: ","}, // {type: "integer", value: "23"}, // {type: "group", value: ","}, // {type: "integer", value: "45"}, // {type: "group", value: ","}, // {type: "integer", value: "67"}, // {type: "group", value: ","}, // {type: "integer", value: "890"}] Interoperability and compatibility risk The BigInt.prototype.toLocaleString was implemented as BigInt.prototype.toString. This launch will make it return string differently, based on the cultural conventions of the locale. Code expecting the BigInt.prototype.toLocaleString behavior the same as BigInt.prototype.toString will break but the chance is very low since the ECMA262 specification already make it clear the toLocaleString is delegating to the ECMA402 specification to specify. The Intl.NumberFormat.prototype.format and formatToParts now take BigInt as value instead of throwing exception. - Firefox:No public signals - Edge: No public signals - Safari:No public signals - Web Developers:No signals Is this feature fully tested? Yes; our implementation passes our own V8 tests for all the features as well as tests under test262. - intl402/BigInt/prototype/toLocaleString <https://github.com/tc39/test262/tree/master/test/intl402/BigInt/prototype/toLocaleString> - test/intl/bigint/ <https://cs.chromium.org/chromium/src/v8/test/intl/bigint/> Tracking bug https://crbug.com/v8/8699 Design Doc: https://goo.gl/qpRwFo Link to entry on the Chrome Platform Status dashboard https://www.chromestatus.com/feature/5742274625404928 Requesting approval to ship? Yes. Note that since this is a V8/JS feature, this post is just an FYI to blink-dev — no signoff from Blink API owners is required. -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.