Правильно будет:
PHP код:
static void Job2(Args _args)
{;
info(strFmt("%1",Round(123.0099999,0.001)));
pause;
}
Второй аргумент в ф-ии Round - это число кратности округления. Т.е. округление происходит к ближайшему числу, кратному этому параметру.
Более логично выглядит ф-я DecRound( X, Y ), которая округляет число X до Y знаков после запятой. В нашем случае:
PHP код:
static void Job2(Args _args)
{;
info(strFmt("%1",DecRound(123.0099999,3)));
pause;
}
P.S.
Заметьте что у вас в примере выводится число 123.12, хотя на самом деле результат выражения в аксапте 123.123.

Тут дело в том что strFmt по умолчанию выводит только 2 знака после запятой в числах. Учитывайте это. Используйте num2str с указанием числа знаков после запятой, либо воспользуйтесь ф-ей:
PHP код:
public static str real2str( real number )
{
real num = abs( number );
real int_part = trunc( num );
real frac_part = frac( num );
str int_str;
str frac_str;
int dig;
// Generate int str
while ( int_part > 0 )
{
dig = 10 * (int_part / 10 - trunc(int_part / 10));
int_part = trunc( int_part / 10 );
int_str = num2char( dig + char2num( "0", 1 ) ) + int_str;
}
// Generate frac str
while ( frac_part > 0 )
{
dig = trunc( frac_part * 10 );
frac_part = frac( frac_part * 10 );
frac_str = frac_str + num2char( dig + char2num( "0", 1 ) );
}
// Make final result
if (strlen( int_str ) == 0 )
{
int_str = "0";
}
if ( strlen( frac_str ) != 0 )
{
int_str = int_str + "." + frac_str;
}
if ( number < 0 )
{
int_str = "-" + int_str;
}
if ( number != str2num( int_str ) )
{
error( " *** MISMATCH OF " + num2str( number, 0, 4, 1, 1 ) + " AND " + int_str );
//for ( dig = 1; dig < 1000000; dig++ )
//{
// Do nothing
//}
}
return int_str;
}