Issue #13309 has been updated by Martin Drst.


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: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>