Получаю странные знаюения в реультате выюисления

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Yevheniy Kopanitskyy
1032
Yevheniy Kopanitskyy  

Написал функцию в которую кладуцелое число и нужно получить цену

if(5!=0)
         {
         double restantemaximum=NormalizeDouble(5*Point,Digits);
    }
в результат получаю 
5е-05
Хочу получить 0,00005;

Почему

Если делаю так double restantemaximum=NormalizeDouble(5/100000,Digits);
то получаю 0,0

Помогите решить задачку

Martin CHEguevara
2050
Martin CHEguevara  

смотря куда выводить результат. А так это одно и то же.

5е-05 - имеется ввиду что 5*10 в минус 5 степени. то есть 5 нулей после запятой.
if(5!=0) -  всегда true, зачем оно вам??
Vladimir Gribachev
67791
Vladimir Gribachev  
DoubleToStr(restantemaximum,_Digits);
Igor Makanu
8804
Igor Makanu  

возможно приведение типов работает, если Вам нужно получить вещественное число, то и объявляйте везде вещественные числа, попробуйте так:

if(5.0!=0.0)
         {
         double restantemaximum=NormalizeDouble(5.0*Point,Digits);
потом так: 
	double restantemaximum=NormalizeDouble(5.0/100000.0,Digits);
    }
хотя результат 5е-05 это корректное значение
Sergey Savinkin
2091
Sergey Savinkin  
Yevheniy Kopanitskyy:

Написал функцию в которую кладуцелое число и нужно получить цену

double restantemaximum=NormalizeDouble(5/100000,Digits);

Вы делите целое число 5 на целое 100 000. Это деление int на int. В результате всегда получается целое число. В данном случае, 0. Попробуйте (5.0 / 100000) или ( (double) 5 / 100000 ). В этом случае Вы дробное число будете делить на целое и получите дробное (double).

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий