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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

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

Сообщение 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) та же ситуация
Как бороться подскажите, явно чё то простое??
Время ведет!
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

666\2p,8888 ?
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

galover писал(а):666\2p,8888 ?
именно так и пробовал - не помогло (это я ошибся up ..)
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

string(VarOS01._KolKatOs*HOZOBOR.PROCENT/100.00,0,5)
когда просто на 100 делите у вас идет приведение к целому видимо HOZOBOR.PROCENT.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

edward_K писал(а):string(VarOS01._KolKatOs*HOZOBOR.PROCENT/100.00,0,5)
когда просто на 100 делите у вас идет приведение к целому видимо HOZOBOR.PROCENT.
Респект! Большое спасибо - но совершенно не понятно т.к. VarOS01._KolKatOs и HOZOBOR.PROCENT тип double
Время ведет!
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение 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'
Вроде всё просто.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение 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'
Вроде всё просто.
спасибо :) не знал...
Время ведет!
Ответить