Converting string to double: NSString or NSScanner

  • Hello List,

      I'm having troubles deciphering the documentation. I have doubles
    stored in a text file which always use the dot "." as decimal
    separator. When converting the strings to doubles the conversion to be
    locale independent. The NSString:doubleValue documentation says:

    > This method uses formatting information stored in the non-localized
    value;
    > use an NSScanner object for localized scanning of numeric values
    from a string.

    "Formatting information stored in the non-localized value" is really a
    little cryptic - what formatting information and where is the non-
    localized value stored. The part about NSScanner indicates that
    NSString:doubleValue is what I want, is it?

    Regards
    Markus
    --
  • Basically NSString's floatValue and doubleValue methods only work when
    the numbers use the US style dot separator (as opposed to other locale
    separators such as a comma).  If your NSString might contain non-US
    separators (or other formatting differences) you'll have to use
    NSScanner to do a localized scan of the NSString to extract the
    correct number.  If you tried to use NSString's doubleValue on
    something like "12,34" you would get 12.000.

    On May 31, 2008, at 10:22 PM, Markus Spoettl wrote:

    > Hello List,
    >
    > I'm having troubles deciphering the documentation. I have doubles
    > stored in a text file which always use the dot "." as decimal
    > separator. When converting the strings to doubles the conversion to
    > be locale independent. The NSString:doubleValue documentation says:
    >
    >> This method uses formatting information stored in the non-
    > localized value;
    >> use an NSScanner object for localized scanning of numeric values
    > from a string.
    >
    > "Formatting information stored in the non-localized value" is really
    > a little cryptic - what formatting information and where is the non-
    > localized value stored. The part about NSScanner indicates that
    > NSString:doubleValue is what I want, is it?
  • On May 31, 2008, at 9:35 PM, Michael Vannorsdel wrote:
    > Basically NSString's floatValue and doubleValue methods only work
    > when the numbers use the US style dot separator (as opposed to other
    > locale separators such as a comma).  If your NSString might contain
    > non-US separators (or other formatting differences) you'll have to
    > use NSScanner to do a localized scan of the NSString to extract the
    > correct number.  If you tried to use NSString's doubleValue on
    > something like "12,34" you would get 12.000.

    OK, thanks for confirming that. "US-style" is exactly what I need.

    Regards
    Markus
    --
  • On 5/31/08 10:35 PM, Michael Vannorsdel said:

    > Basically NSString's floatValue and doubleValue methods only work when
    > the numbers use the US style dot separator (as opposed to other locale
    > separators such as a comma).  If your NSString might contain non-US
    > separators (or other formatting differences) you'll have to use
    > NSScanner to do a localized scan of the NSString to extract the
    > correct number.  If you tried to use NSString's doubleValue on
    > something like "12,34" you would get 12.000.

    NSNumberFormatter would be another option.

    --
    ____________________________________________________________
    Sean McBride, B. Eng                <sean...>
    Rogue Research                        www.rogue-research.com
    Mac Software Developer              Montréal, Québec, Canada
previous month june 2008 next month
MTWTFSS
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
Go to today