之前用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 方法可以正确转换的位数或者大小