unsign long 的数据可以表示的范围应该是0~4294967295(2^32),也就是10的9次方级别。你单用浮点(float)还是属于单精度的,同样无法超越32位机器限制。你都搞到10的9次方的平方去了,相当于10的18次方,不溢出才怪呢。如果换成双精度浮点型(double)应该能满足你的需要了。
按道理10的9次方是在无符号长整形范围内,不应该会溢出的.
LZ用char s[1000]来计算,每个字节存放一个位