Здравствуйте Smetanin, Вы писали:
S>Здравствуйте Snax, Вы писали:
S>Private Sub Command1_Click() S> Dim i As Double S> i = 0.005 S> MsgBox "Round(i,2) = " & CStr(Round(i, 2)) S>End Sub
S>Должно получаться, IMHO 0.01, а получается 0.
На С просто:
double Round(double val, int precision)
{
double dFr ;
// увеличиваем (уменьшаем на точность).
val = val * pow(10, precision) ;
// получаем значение до дес. точки.
dFr = modf( val, &val ) ;
// округляем по общему принципу.
if( fabs(dFr) >= 0.5 )
val = val + (dFr > 0.0 ? 1.0 : -1.0 ) ;
// возвращаем значение обратно.
val = val * pow(10,-precision) ;
return val ;
}
Вариант не самый оптимальный по скорости но для бухгалтерии сойдет...