C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Проблемы с числами, Невидит знаков после точки в типе double
Arhnt
Отправлено: 06.04.2004, 13:16


Не зарегистрирован







Доброго времени суток
Вот такая проблема,
CODE

#include <stdio.h>


int main(int argc, char* argv[])
{
 double x=(0.6), y=0.8, z;
 z=double(x+y);
 printf("%3.3f %3.3f %3.3f \n",x,y,z);
 return 0;
}

И результат вывода такой
CODE

0.000 0.000 0.000


Среда разработки Kylix (bcb под Линукс)
Может кто сталкивался? А то у меня уже слёзы на глазах наварачиваются sad.gif
olegenty
Отправлено: 06.04.2004, 13:51


Ветеран

Группа: Модератор
Сообщений: 2412



напоминает глюк. создал консольное приложение, код работает на ура, выдаёт, что ему и полагается по определению.
Arhnt
Отправлено: 06.04.2004, 16:22


Не зарегистрирован







Угу, если я этот код компилю стандартным gcc то всё работает как надо.
Может в Билдере есть какие параметры округления? или опции компилятора?
Aptem
Отправлено: 06.04.2004, 17:09


Мастер участка

Группа: Участник
Сообщений: 349



Например, у меня была такая проблема:

CODE
float x;

x = 6/3;

ShowMessage ( x );


Выдает одни нули, оказывается нужно было сделать так:
CODE
x = 6.0/3.0;

Тогда работает как часы !
.piero
Отправлено: 06.04.2004, 20:22


Дежурный стрелочник

Группа: Участник
Сообщений: 62



Весь прикол может быть в том, что в линухе неправильно работают всякие float & double Версия ещё не идеальная wink.gif , а может в том что надо запятые ставить biggrin.gif . Других причин не знаю cool.gif .
Георгий
Отправлено: 06.04.2004, 21:37


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



как мне помнится — формат в printf задаётся иначе:
CODE
%<общее число позиций>.<позиции после запятой>f

поэтому, что бы вывести 3 символа до запятой и 3 после надо написать 7.3
т.е. 3 до точки, 3 после точки + точка (тоже один символ)

Отредактировано Георгий — 06/04/2004, 22:40
klen
Отправлено: 07.04.2004, 00:14


Машинист паровоза

Группа: Участник
Сообщений: 239



Не надо грязи на Linux, и на глюки всякие, ребята, смотрю я на ваш код который вы приводите и вспоминаюпоговорку "Компьтор делает только то что просит программист, а не то что он хочет".
Просто с приведением типов не разобрались и с форматированием, и сразу глюки, баги, да еще на Linux наехали, у меня между прочем он без перезагрузки уже 1,5 года х..рит, и хоть бы хны, винт горел, меняли по живому!

Мужики, только без обид.

Удачи.

Отредактировано klen — 07/04/2004, 01:17

Вернуться в Вопросы программирования в C++Builder