zlacker

[return to "My Favorite Programming Problem to Teach: Digit Length"]
1. jepler+N3[view] [source] 2019-11-10 22:44:41
>>jstrie+(OP)
But the math.log10 solution is unfortunately "wrong" too, at least in my python3 implementation.

    import math

    def digitLengthCorrect(n):
        return len(str(n))

    def digitLengthClever2(n):
        return 1 if n == 0 else (math.floor(math.log10(n)) + 1)

    testcases = (
        [10 ** i for i in range(300)] +
        [(10 ** i) - 1 for i in range(300)]
    )

    for t in testcases:
        a = digitLengthCorrect(t)
        b = digitLengthClever2(t)
        assert a == b, (t, a, b)
◧◩
2. contra+sT[view] [source] 2019-11-11 11:21:45
>>jepler+N3
Yeah it was bound to go wrong somewhere when you try to find the length of an arbitrary length integer using floating point arithmetic.
[go to top]