Давайте сделаем некоторое округление
> round(-0.001, 2) [1] 0
Я получаю ноль.
Теперь в сочетании со sprintf
> sprintf("%f", round(-0.001,2)) [1] "-0.000000"
Почему знак минус? Я ожидал 0.000000.
0.000000
$R --version R version 2.13.1 (2011-07-08)
Это природа чисел с плавающей запятой (IEEE 754), здесь определено -0.См -0 .
-0