ios字符串转intValue成负数的问题

之前用intagerValue和intValue转换字符串,给后台传参,但是后台接收到的参数总是错误。打印了一下居然发现转换出来的是负数。原来是因为要转换的字符串位数超限了导致的。随后用longlongValue转换就正常了。

上网查了一下资料,才知道 字符串转 intValue、floatValue、doubleValue、longLongValue 是有位数或者大小限制的。

具体是:

1.[countStr  intValue ];最大转换字符串为“2147483647”是不会出错的,哪怕转换大1,也就是当转换字符串为“2147483648”的时候,用该方法转换出来的结果一直都会是“2147483647”,当然,比“2147483647”小的字符串是可以正确转换的

2.[countStr  floatValue ];这个转换只有小数点前面只有一位的时候转换结果和字符串一致,其它的都会有偏差

3.[countStr  longLongValue ];这个方法最大可转换字符串为“9223372036854775807”,也就是说这个方法转换比它小的任何一个长整形的都是正确的,哪怕是比它大1,转换的时候都会有偏差

4.[countStr  doubleValue ];这个方法的话,当你转换有小数点的时候,在小数点前的位数小于11的时候,转换出来的结果是和字符串是一致的,其它情况都会有偏差

以上3、4情况,小数点之后的位数均须按照系统限定位数,超出限制的一定和转换字符串不一致

资料参考文章:字符串 intValue、floatValue、doubleValue、longLongValue 方法可以正确转换的位数或者大小

你可能感兴趣的:(ios字符串转intValue成负数的问题)