Форум программистов, компьютерный форум CyberForum.ru

Объясните ситуацию с integer, float и double. Выводится число на единицу меньше положенного - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выделение целой части first/second http://www.cyberforum.ru/cpp-beginners/thread1121730.html
Уже надо ехать в универ, а я сделал чужой вариант, программа простая, но уже надо ехать. Очень надеюсь на вашу помощь, буду очень признателен. Если я правильно понимаю задачу здесь примерно 10 строчек кода. Пожалуйста помогите! Поле first - целое положительное число, числитель; поле second - целое полажительное число, знаминатель. ,Реализовать метод ipart() - выделение целой части...
C++ Перевод из pascal в Visual C++ Добрый день! Не могли бы вы помочь мне в переводе с Pascal в Visual C++? Очень нужна ваша помощь Program TAB; users crt; var a,b,h1,h2,e,y,y0,y1,y2,t,x:real; begin clrscr; writeln('Задайте концы отрезка субтабулирования:'); readln(a,b); writeln('Новый шаг таблицы:'); http://www.cyberforum.ru/cpp-beginners/thread1121725.html
Компиляция нескольких файлов C++
Здравствуйте, есть программа состоящая из 4 cpp, необходимо ее собрать, попытался собрать с помощью MinGW(взял тут http://sourceforge.net/projects/mingw/files/), но получил кучу ошибок, хотя прога написана верно(вроде), может кто подсказать как ее собрать? Спасибо, заранее.
Сортировка элементов одномерного массива C++
Привет всем, помогите составить программу. Отсортировать в порядке убывания элементы массива Е(46), расположенные до первого отрицательного его элемента.
C++ Определить функции нахождения суммы и разности векторов http://www.cyberforum.ru/cpp-beginners/thread1121686.html
Здравствуйте, помогите составить программу. Определить функции нахождения суммы и разности векторов в трехмерном пространстве. Для векторов \vec{a},\vec{b},\vec{c},\vec{d}, координаты которых заданы с клавиатуры, вычислить \vec{a}-\vec{b}+\vec{c}-\vec{d},. Параметры передавать как ссылки.
C++ Компилятор Visual C++ 2008 выдает ошибку Всем Привет! Компилятор Visual C++ 2008 выдает ошибку, помогите исправить пожалуйста. код ошибки: 1>Задача 2.cpp 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\задача 2\задача 2\задача 2.cpp(9) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) 1>Журнал построения был сохранен в "file://c:\Documents and... подробнее

Показать сообщение отдельно
DrOffset
6426 / 3800 / 880
Регистрация: 30.01.2014
Сообщений: 6,594
17.03.2014, 21:12     Объясните ситуацию с integer, float и double. Выводится число на единицу меньше положенного
Цитата Сообщение от zss Посмотреть сообщение
что процессор ПК работает с числами double.
Вычисления на FPU в x86 могут иметь три варианта точности: 32, 64, (80 или 128) бит. Откуда вывод, что ПК работает именно с double? Точность согласно стандарта IEEE-754, выставляется флагом PC. Который, по-умолчанию, выставляет точность в максимальное значение, что уже противоречит тезису, если считать, что double - 64 бита. Отсюда закономерный вопрос: что вообще такое double с точки зрения ПК с учетом того, что стандарт С++ не регламентирует реализацию плавающей точки?

Точность плавающей точки теряется либо на понижающих преобразованиях, либо из-за особенностей представления, когда число не представимо в виде конечной двоичной дроби.

Вот я еще и примерчик накидал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//mingw 4.7.2 
 
//sizeof(float) == 4
extern float a1;
extern float b1;
 
//sizeof(double) == 8
extern double a2; // extern, чтобы подавить вычисление значения на этапе компиляции, переменные определены в другом файле
extern double b2;
 
void f1()
{
    b1 = a1 / 10;
}
 
void f2()
{
    b2 = a2 / 10;
}
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
f1:
    fld DWORD PTR LC0
    fdivr   DWORD PTR _a1 ; адресуем двойное слово
    fstp    DWORD PTR _b1
    ret
f2:
    fld DWORD PTR LC0 ; заметим, что 10 все еще адресуется как двойное слово
    fdivr   QWORD PTR _a2 ; адресуем четверное слово
    fstp    QWORD PTR _b2
    ret
LC0:
    .long   1092616192 ; это 10
Никаких преобразований тут нет.
 
Текущее время: 12:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru