Страница 1 из 1

Чего то затупил с округлениями ... хелп..

Добавлено: 28 июл 2009, 19:11
Masygreen
логаю в файл ... все переменные double..

Код: Выделить всё

           logstrtofile('c:\1.txt','***************');
           logstrtofile('c:\1.txt',VarOS01._KolKatOs);
           logstrtofile('c:\1.txt',HOZOBOR.PROCENT);
           logstrtofile('c:\1.txt',VarOS01._KolKatOs*HOZOBOR.PROCENT);
           logstrtofile('c:\1.txt',VarOS01._KolKatOs*HOZOBOR.PROCENT/100);
получаю
  • ***************
    1.00
    60.89
    60.89
    0.61
не понятно почему - но после /100 происходит округление
а я вот хочу получить в ответе не 0.61, а 0,6089
думал проблема в выводе пробовал DoubleToStr (,'666\2p,88') - не помогло все равно 0,61..
пробовал принудительно Round(,6) та же ситуация
Как бороться подскажите, явно чё то простое??

Добавлено: 28 июл 2009, 19:23
galover
666\2p,8888 ?

Добавлено: 28 июл 2009, 19:25
Masygreen
galover писал(а):666\2p,8888 ?
именно так и пробовал - не помогло (это я ошибся up ..)

Добавлено: 28 июл 2009, 19:28
edward_K
string(VarOS01._KolKatOs*HOZOBOR.PROCENT/100.00,0,5)
когда просто на 100 делите у вас идет приведение к целому видимо HOZOBOR.PROCENT.

Добавлено: 28 июл 2009, 19:39
Masygreen
edward_K писал(а):string(VarOS01._KolKatOs*HOZOBOR.PROCENT/100.00,0,5)
когда просто на 100 делите у вас идет приведение к целому видимо HOZOBOR.PROCENT.
Респект! Большое спасибо - но совершенно не понятно т.к. VarOS01._KolKatOs и HOZOBOR.PROCENT тип double

Добавлено: 28 июл 2009, 21:43
KATZ
У LogStrToFile второй параметр - строковый, поэтому идет неявное преобразование типа. При преобразовании числа в строку, если количество цифр в дробной части не задать явно, то их будет 2:

Код: Выделить всё

String(123.4567)=String(123.4567,0,2)='123.46'
А если задать явно, то будет сколько задано:

Код: Выделить всё

String(123.4567,0,1)='123.5'
String(123.4567,0,4)='123.4567'
Вроде всё просто.

Добавлено: 29 июл 2009, 12:11
Masygreen
KATZ писал(а):У LogStrToFile второй параметр - строковый, поэтому идет неявное преобразование типа. При преобразовании числа в строку, если количество цифр в дробной части не задать явно, то их будет 2:

Код: Выделить всё

String(123.4567)=String(123.4567,0,2)='123.46'
А если задать явно, то будет сколько задано:

Код: Выделить всё

String(123.4567,0,1)='123.5'
String(123.4567,0,4)='123.4567'
Вроде всё просто.
спасибо :) не знал...