length of return value of sprintf is one byte longer than actual length
length of return value of sprintf is one byte longer than actual length

therefore, it causes a problem like this
```
value = sprintf('%5.2f', 12.34567) #=> "12.34" (this is good for now)
value.size #=> 6 (we expect 5!)
str = "start" + value + "end" # (str will be "start12.34\0end" in memory)
puts str #=> "str12.34"
```

mrubyc/mrubyc,mrubyc/mrubyc