mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-31 10:22:15 +00:00
@@ -7,15 +7,8 @@ proc `$`*(x: int): string {.magic: "IntToStr", noSideEffect.}
|
||||
## spelling `toString`:idx:.
|
||||
|
||||
template dollarImpl(x: uint | uint64, result: var string) =
|
||||
type destTyp = typeof(x)
|
||||
if x == 0:
|
||||
return "0"
|
||||
elif x == 1:
|
||||
return "1"
|
||||
|
||||
let length = digits10(x)
|
||||
setLen(result, length)
|
||||
|
||||
numToString(result, x, length)
|
||||
|
||||
when defined(js):
|
||||
|
||||
23
tests/stdlib/tdigitsutils.nim
Normal file
23
tests/stdlib/tdigitsutils.nim
Normal file
@@ -0,0 +1,23 @@
|
||||
import std/private/digitsutils
|
||||
|
||||
template main =
|
||||
block: # digits10
|
||||
doAssert digits10(0'u64) == 1
|
||||
# checks correctness on all powers of 10 + [0,-1,1]
|
||||
var x = 1'u64
|
||||
var num = 1
|
||||
while true:
|
||||
# echo (x, num)
|
||||
doAssert digits10(x) == num
|
||||
doAssert digits10(x+1) == num
|
||||
if x > 1:
|
||||
doAssert digits10(x-1) == num - 1
|
||||
num += 1
|
||||
let xOld = x
|
||||
x *= 10
|
||||
if x < xOld:
|
||||
# wrap-around
|
||||
break
|
||||
|
||||
static: main()
|
||||
main()
|
||||
Reference in New Issue
Block a user