+ # Optimized version for base 10
+ fun digit_count_base_10: Int
+ do
+ var val: Int
+ var result: Int
+ if self < 0 then
+ result = 2
+ val = -self
+ else
+ result = 1
+ val = self
+ end
+ loop
+ if val < 10 then return result
+ if val < 100 then return result+1
+ if val < 1000 then return result+2
+ if val < 10000 then return result+3
+ val = val / 10000
+ result += 4
+ end
+ end
+