Учебник C ++ по обработке чисел с плавающей запятой

Int - это целое число, подобное 47, без десятичной точки. Вы не можете иметь 4,5 детей или петли 32,9 раза. Вы можете получить $ 25,76, если используете поплавок. Поэтому, когда вы создаете свою программу, вы должны решить, какой тип использовать.

Это то, что делают некоторые скриптовые языки? Поскольку это неэффективно, операции с плавающей запятой занимают больше памяти и, как правило, работают медленнее, чем операции int. Кроме того, вы не можете легко сравнить два числа с плавающей точкой, чтобы увидеть, равны ли они с целыми числами.

Чтобы манипулировать числами, вы должны хранить их в памяти. Поскольку значение может быть легко изменено, оно называется переменной.

компилятор который читает вашу программу и преобразует ее в машинный код, должен знать, какой это тип, то есть тип int или float, поэтому прежде чем ваша программа использует переменную, вы должны DECLARE Это.

Вы заметите, что переменная Counter установлена ​​в 0. Это необязательная инициализация. Это очень хорошая практика для инициализации переменных. Если вы не инициализируете, а затем используете их в коде без установки начального значения, переменная будет начинаться со случайного значения, которое может «сломать» ваш код. Значение будет тем, что было в памяти при загрузке программы.

instagram viewer

Какое наибольшее число может хранить int?. Ну, это зависит от типа Процессор но это обычно принимается как 32 бита. Поскольку он может содержать почти столько же отрицательных значений, сколько положительных, диапазон значений составляет +/- 2-32 до 232 или от -2 147 483 648 до + 2 147 483 647.

Это для подписанного Int, но есть также неподписанный Int, который содержит ноль или положительный. Диапазон значений от 0 до 4 294 967 295. Просто помни - беззнаковые целые не нуждаются в знаке (как + или -1) перед ними, потому что они всегда положительны или 0.

Существует более короткий тип int, по совпадению называемый short int, который использует 16 бит (2 байта). Это содержит числа в диапазоне от -32768 до +32767. Если вы используете большое количество целых, вы можете сэкономить память с помощью коротких целых. Это не будет быстрее, несмотря на половину размера. 32-битные ЦП извлекают значения из памяти блоками по 4 байта за раз. То есть 32 бита (отсюда и название - 32-битный процессор!). Таким образом, выборка 16 битов все еще требует 32-битной выборки.

Существует более длинный 64-битный долго долго в С. Некоторые компиляторы C ++, хотя и не поддерживают этот тип, напрямую используют альтернативное имя, например и Borland, и Microsoft используют _int64. Диапазон значений от -9223372036854775807 до 9223372036854775807 (со знаком) и от 0 до 18446744073709551615 (без знака).

Если вы не занимаетесь научным программированием с очень большими или маленькими числами, вы будете использовать только удвоения для большей точности. Поплавки хороши для 6 цифр точности, но двойные предлагают 15.

Рассмотрим номер 567.8976523. Это допустимое значение с плавающей точкой. Но если мы распечатаем его с этим кодом ниже, вы можете увидеть отсутствие точности. Номер имеет 10 цифр, но хранится в переменной с плавающей точкой с точностью только в шесть цифр.

Видеть О вводе и выводе для деталей о том, как работает cout, и как использовать точность. Этот пример устанавливает точность вывода до 8 цифр. К сожалению, числа с плавающей запятой могут содержать только 6, и некоторые компиляторы выдают предупреждение о преобразовании двойного числа в число с плавающей точкой. При запуске это распечатывает 567.89764

Если вы измените точность до 15, она будет напечатана как 567.897644042969. Большая разница! Теперь переместите десятичную точку два влево, чтобы получить значение 5.678976523, и перезапустите программу. На этот раз он выдает 5.67897653579712. Это точнее, но все же отличается.

Если вы измените тип значения на удвоение и точность до 10, он напечатает значение точно так, как определено. Как правило, числа с плавающей запятой удобны для небольших нецелых чисел, но с более чем 6 цифрами вы должны использовать двойные числа.

Написание компьютерного программного обеспечения было бы бесполезным, если бы вы не могли делать сложения, вычитания и т. Д. Вот пример 2.

Помимо сложения, вы можете делать вычитание, умножение и деление. Просто используйте + для сложения, - для вычитания, * для умножения и / для деления.

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

Теперь ширина, выравнивание, количество знаков после запятой и знаки могут быть установлены с помощью соиЬ объект и iomanip включить функции файла.

Тысячи разделителей немного сложнее. Они установлены из локали ПК. Локаль содержит информацию, относящуюся к вашей стране, такую ​​как символы валюты и десятичной точки и разделители тысяч. В Великобритании и США число 100,98 использует десятичную точку. в качестве десятичной точки, тогда как в некоторых европейских странах это запятая, поэтому 5,70 евро означает цену 5 евро и 70 центов.

создает объект mpunct который является ссылкой на moneypunct шаблон класса. Здесь есть информация об указанной локали - в нашем случае thousands_sep () Метод возвращает символ, используемый для разделителя тысяч.

Заметка Кажется, есть расхождения между разными компиляторами относительно того, как cout.imbue ведет себя. В Visual C ++ 2005 Express Edition это включало разделители. Но тот же код с Microsoft Visual C ++ 6.0 не сделал!

Если вы используете один из этих двух режимов форматирования через cout.setf тогда точность () устанавливает количество знаков после запятой (не общее количество цифр), но вы теряете тысячи форматирования. Также завершающие нули (как были включены ios_base:: showpoint ) стать автоматически включенным без необходимости showpoint.

Вы ожидаете что-то вроде значения 11.0909090909. На самом деле значение равно 11. Почему это? поскольку выражение на правой стороне (известный как Rvalue) является целым числом / целым числом. Таким образом, он использует целочисленную арифметику, которая отбрасывает дробную часть и присваивает 11 для f. Меняя это на

В Си нет такого типа как BOOL. Выражения в C основывались на том, что ноль является ложным или ненулевой является истинным. В C ++ тип BOOL может принимать значения правда или ложный. Эти значения по-прежнему эквивалентны 0 и 1. Где-то в компиляторе у него будет

Или, по крайней мере, так действует! Две строки ниже действительны без приведения, поэтому за кулисами bools неявно преобразуются в ints и могут даже увеличиваться или уменьшаться, хотя это очень плохая практика.

If все равно будет делать if, поскольку плохая переменная не равна нулю, но это плохой код, и его следует избегать. Хорошей практикой является использование их по назначению. если (! v) действительно C ++, но я предпочитаю более явный если (v! = 0). Это, однако, дело вкуса, а не должен сделать директивы.

компилятору лучше отлавливать ошибки во время компиляции, чем пользователю во время выполнения

instagram story viewer