From: duerst@... Date: 2017-03-13T06:33:20+00:00 Subject: [ruby-core:80103] [Ruby trunk Feature#13309] Locale paramter for Integer(), Float(), Rational() Issue #13309 has been updated by Martin D��rst. I agree that it would be great to have such a facility. I'm not sure we need `locale:`, we could just allow it as a second parameter (once we have made sure that there are no other suitable candidates for further parameters). I would personally start with 'output' functions (i.e. `to_s`), because they are way more deterministic. Please note that currently, `Float("4,294,967,295.0")` throws an error, we may want (or not) to keep it that way, and only allow commas if a locale is explicitly set. Also, we may want to create some kind of Locale object and allow this as a parameter. Also, we may want to allow more direct specification (e.g. `decimal_separator: ',', thousands_separator: '.'`; but note that this isn't complete because in other locales (e.g. India), the separator will not separate thousands). ---------------------------------------- Feature #13309: Locale paramter for Integer(), Float(), Rational() https://bugs.ruby-lang.org/issues/13309#change-63529 * Author: Tsuyoshi Sawada * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Matz' comment to my proposal on `Kernel#Boolean()` (https://bugs.ruby-lang.org/issues/13260) led me to the idea of introducing an optional locale parameter (called under the name `allow` in #13260). And now, I think that that idea can be applied generally to the `Kernel#Integer`, `Kernel#Float`, and `Kernel#Rational` methods. There seems to be constant demand to parse numbers written in different languages, and there is no official clean way to handle the problem. I thought we can let these methods take an optional locale parameter to allow inputs in different languages. ```ruby Float("4,294,967,295.0") # => 4294967295.0 English, by default Float("4,294,967,295.0", locale: "en") # => 4294967295.0 Float("4 294 967.295,0", locale: "de") # => 4294967295.0 Float("4 294 967 295,0", locale: "fr") # => 4294967295.0 ``` Cf. https://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html -- https://bugs.ruby-lang.org/ Unsubscribe: