Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
kos_ua
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 35
1

Значимость числа

10.05.2006, 14:24. Просмотров 2532. Ответов 9
Метки нет (Все метки)

Пишем код:

float x=432.2;

x=x-432;

По логике и согласно арифметике:

x=0.2

А по мнению ВСЕХ компилеров С++/С

x=0.20001221

При добавлении целой части, в размере >200 остаток исчезает...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2006, 14:24
Ответы с готовыми решениями:

Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми
Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой...

Как написать программу-калькулятор чтобы было можно додавать 2 числа, 3 числа, 4 числа, n чисел?
Как написать программу-калькулятор чтобы было можно додавать 2 числа, 3 числа,...

Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив
Нужна помощь! Срочно! Нужно ввести в программу строку (числа, латиница),...

Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми
Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой...

Даны два числа. Если квадратный корень из второго числа меньше первого числа, то увеличить второе число в пять раз
Даны два числа. Если квадратный корень из второго числа меньше первого числа,...

9
boombastik
7 / 7 / 11
Регистрация: 13.02.2007
Сообщений: 1,255
10.05.2006, 17:05 2
последствия приведения типов float -> double -> float, int -> double -> float
0
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
10.05.2006, 17:37 3
Очень неприятная вещь для научных вычислений и графики. При количестве итераций около 100 этот глюк становится заметен.
0
Silver
24.05.2006, 13:45 4
x=0.20001221
При добавлении целой части, в размере >200 остаток исчезает...
Это не глюк! Это известная вещь, которая называется значимостью числа.
Сейчас я конечно навскидку не помню, но у каждого формата double, float есть количество цифр, которое является значимым.
Допустим для float это 8
получаем, что при добавлении 200 к 0.20001221 число становится равным 200.20001221.
Отсчитываем от начала 8 цифр (значимых) и получаем 200.2000
А неровный остаток x=0.20001221 из-за хранения числа в 16-ричном виде,
а не в десятичном.
Silver
24.05.2006, 13:53 5
Исправление
Отсчитываем от начала 8 цифр (значимых) и получаем 200.20001
На самом деле там несколько сложнее, но принцип таков.
kos_ua
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 35
05.07.2006, 11:47  [ТС] 6
Все намного проще... Слава Богу, есть такой предмет как ОФЭВМ (Организация функционирования ЭВМ).... Вот там и объяснили в чем же заключается соль...
0
boombastik
7 / 7 / 11
Регистрация: 13.02.2007
Сообщений: 1,255
05.07.2006, 15:49 7
http://www.parashift.com/c++-faq-lite/newbie.html



вопрос № [29.16]
0
forprix
2 / 2 / 1
Регистрация: 12.02.2018
Сообщений: 39
05.08.2018, 10:09 8
Для точных вычислений без остатка используй double.
Ни в коем случае не делай вычисления с другими типами типа int

И вообще тот остаток который ты видишь - это хитрости преобразования в строку.
На самом деле его нету, а учитывает его только компилятор в своих целях.
Попробуй это:
C++
1
2
3
4
5
6
std::string floatToString(float num)
{
    std::ostringstream ss;
    ss << num;
    return ss.str();
}
0
Байт
Эксперт C
18981 / 12189 / 2547
Регистрация: 24.12.2010
Сообщений: 24,868
05.08.2018, 15:19 9
Цитата Сообщение от forprix Посмотреть сообщение
Для точных вычислений без остатка используй double.
Остаток все равно будет. Только меньше. И есть шанс его не разглядеть.
Цитата Сообщение от forprix Посмотреть сообщение
Ни в коем случае не делай вычисления с другими типами типа int
Не уверен в правильности этого совета. Только типы типа int позволяют производить действительно точные вычисления (пока помещаются в разрядную сетку, конечно)
Но то, что о типе float следует забыть, и чем скорее - тем лучше, согласен!
0
Croessmah
++Ͻ
14743 / 8424 / 1598
Регистрация: 27.09.2012
Сообщений: 20,721
Записей в блоге: 2
Завершенные тесты: 1
05.08.2018, 20:55 10
Ребята, теме больше 12 лет.
0
05.08.2018, 20:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2018, 20:55

Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие в файл F. Числа в файле G должны следовать
Помогите доздать с++) вот задание: Дан файл F, компонентами которого являются...

От данного числа N вычтем сумму цифр этого числа, от полученного числа опять вычтем сумму цифр и т.д. до тех пор, пока число положительно
И опять: сколько можно? Задано натуральное число N. От данного числа...

значимость различия
Какой наиболее простой способ проверить - значимо ли различаются две выборки?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru