c# - Converting a string with commas to double and int are different. Why? -
i migrating old mfc gui c#.
i building form-based gui when i've got unexpected exception converting string integer type. assumed work same converting string double.
string str = "1,000"; double dthou = convert.todouble(str); // ok int ithou = convert.toint32(str); // raises exception
conversion double gives correct value: 1000.0. int conversion, able solution : convert.toint32() string commas.
but curious if there reason behind this. or, missing something?
i able find similar, not duplicate question : number parsing weirdness
[edit] after learning culture issue.
i in kind of culture-shock because until now, in korea, both floating point number , integer numbers expressed "," thousands group , "." decimal point (at least in real world, in korea, mean, think... ). guess have accept current settings of ms visual studio , carry on.
[edit2] after sleeping on issue.
i think it's more of inconsistent handling of formatted string. todouble accepts strings thousands separator (in culture, comma), toint32 not. if todouble
float | allowthousands
, why could'nt toint32
have been integer | allowthousands
asking.
for double conversion, there 2 possibilities:
- in culture,
,
number group separator. , conversion succeeds , returns value of1000
. - alternatively, in culture,
,
used decimal separator. again conversion floating point succeeds time returns1
.
for conversion integer, "1,000"
not integer. suspicion, given naming, ,
number group separator you. , expecting treated way toint32()
. toint32()
not accept number group separators. valid characters toint32()
0
9
, optional sign prefix of -
or +
, leading or trailing whitespace.
Comments
Post a Comment