What is the maximum number of digits that can be parsed as u128. I am encountering Err(ParseIntError { kind: Overflow })
while trying to parse 50 digit positive integer.
My error:
...
...
result: id 89 "40789923115535562561142322423255033685442488917353" Err(ParseIntError { kind: Overflow })
result: id 90 "44889911501440648020369068063960672322193204149535" Err(ParseIntError { kind: Overflow })
result: id 91 "41503128880339536053299340368006977710650566631954" Err(ParseIntError { kind: Overflow })
result: id 92 "81234880673210146739058568557934581403627822703280" Err(ParseIntError { kind: Overflow })
result: id 93 "82616570773948327592232845941706525094512325230608" Err(ParseIntError { kind: Overflow })
result: id 94 "22918802058777319719839450180888072429661980811197" Err(ParseIntError { kind: Overflow })
result: id 95 "77158542502016545090413245809786882778948721859617" Err(ParseIntError { kind: Overflow })
result: id 96 "72107838435069186155435662884062257473692284509516" Err(ParseIntError { kind: Overflow })
result: id 97 "20849603980134001723930671666823555245252804609722" Err(ParseIntError { kind: Overflow })
result: id 98 "53503534226472524250874054075591789781264330331690" Err(ParseIntError { kind: Overflow })
...
...
Corresponding code for this:
fn read_num(a: &mut Reader<File>) -> Result<u128, Error> {
let mut sum: u128 = 0;
for(idx, res) in a.records().enumerate() {
let res = res.unwrap();
let val: StringRecord = res;
let ii = val.get(0).unwrap().trim().parse::<u128>().unwrpa();
println!("result: id {} {:?}\t {:?}", idx, val.get(0).unwrap(), ii);
}; // This is formatted
Ok(sum)
}
I initially thought it must be due the new line character at the end of every line, but trim
supposed to remove that and it looks to me that it is removing, because the unparsed output doesn't seem to have anything except the \t
formatter in the println!
Is the overflow due to inherent limitation or something that I am doing wrong?