Actions
Bug #13105
closed`String#to_f` and `String#to_r` don't stop at successive underscores
    Bug #13105:
    `String#to_f` and `String#to_r` don't stop at successive underscores
  
Description
Integer(), Float() and Rational() errs at successive underscores, and String#to_i stops the conversion there.
But String#to_f and String#to_r continue the conversion like as there were just one underscore.
Is this intentional?
"1_2".to_i    #=> 12
"1__2".to_i   #=> 1
"1.__2".to_f  #=> 1.2
"0.1__2".to_r #=> (3/25) == 0.12
        
           Updated by nobu (Nobuyoshi Nakada) over 8 years ago
          Updated by nobu (Nobuyoshi Nakada) over 8 years ago
          
          
        
        
      
      - Subject changed from `String#to_f` and `String#to_r` don't stop successive underscores to `String#to_f` and `String#to_r` don't stop at successive underscores
        
           Updated by matz (Yukihiro Matsumoto) over 8 years ago
          Updated by matz (Yukihiro Matsumoto) over 8 years ago
          
          
        
        
      
      - Assignee changed from matz (Yukihiro Matsumoto) to nobu (Nobuyoshi Nakada)
We should have more consistency here. to_i and to_r should be more restrictive on treating _.
Namely,
- 
_should be within digits
- only one _allowed between digits
Matz.
        
           Updated by nobu (Nobuyoshi Nakada) over 8 years ago
          Updated by nobu (Nobuyoshi Nakada) over 8 years ago
          
          
        
        
      
      - Status changed from Assigned to Closed
Applied in changeset r57979.
object.c: make String#to_f consistent with literal
- 
object.c (rb_cstr_to_dbl): stop at successive underscores, as 
 well as Float literals. [ruby-core:80098] [Bug #13105]- 
_should be within digits
- only one _allowed between digits
 
- 
        
           Updated by nobu (Nobuyoshi Nakada) over 8 years ago
          Updated by nobu (Nobuyoshi Nakada) over 8 years ago
          
          
        
        
      
      - Status changed from Closed to Open
- Assignee changed from nobu (Nobuyoshi Nakada) to matz (Yukihiro Matsumoto)
        
           Updated by nobu (Nobuyoshi Nakada) over 8 years ago
          Updated by nobu (Nobuyoshi Nakada) over 8 years ago
          
          
        
        
      
      - Assignee changed from matz (Yukihiro Matsumoto) to nobu (Nobuyoshi Nakada)
        
           Updated by nobu (Nobuyoshi Nakada) over 8 years ago
          Updated by nobu (Nobuyoshi Nakada) over 8 years ago
          
          
        
        
      
      - Status changed from Open to Closed
Applied in changeset r57987.
test_rational.rb: invalid exponent
- test/ruby/test_rational.rb (test_parse): more checks for invalid
 exponent. [ruby-core:80098] [Bug #13105]
        
           Updated by naruse (Yui NARUSE) over 8 years ago
          Updated by naruse (Yui NARUSE) over 8 years ago
          
          
        
        
      
      - Backport changed from 2.2: REQUIRED, 2.3: REQUIRED, 2.4: REQUIRED to 2.2: WONTFIX, 2.3: WONTFIX, 2.4: WONTFIX
Actions