Два целых на один двойной C ++ - PullRequest
3 голосов
/ 21 ноября 2011

У меня тут небольшая проблема. У меня есть два значения int, одно для долларов и одно для центов. Моя работа - объединить их в одно значение double, и у меня возникли некоторые проблемы. Вот пример того, что я хочу делать:

int dollars = 10
int cents = 50
<some code which I haven't figured out yet>
double total = 10.50

Я хочу думать, что это относительно просто, но мне трудно понять это. Спасибо за помощь!

Ответы [ 5 ]

7 голосов
/ 21 ноября 2011

Для начала подумайте, как бы вы решили эту простую арифметическую задачу, используя карандаш и бумагу (ничего общего с С).Как только вы найдете способ сделать это вручную, я уверен, что способ программирования будет казаться тривиальным.

0 голосов
/ 10 июля 2016

Разве это не так просто: всего = долларов + (центов / 100);

Нет причин усложнять это.

0 голосов
/ 21 ноября 2011

Если вас интересует «вся идея» программирования, а не только правильная домашняя работа, я предлагаю вам подумать об этом: «Есть ли способ, которым я могу представить целый доллар как определенное количество центов? " Почему вы должны спросить это? Поскольку, если вы хотите представить два разных «типа» определенных значений как одно значение, вам необходимо «нормализовать» их или «стандартизировать» их таким образом, чтобы не было потери или повреждения данных (или, по крайней мере, для меньших проблемы).

Также я согласен с Kerrek SB, представляя деньги как double, возможно, не лучшее решение.

0 голосов
/ 21 ноября 2011

Как насчет double total = double(dollars) + double(cents) / 100.0;?

Обратите внимание, что double не является хорошим типом данных для представления основанных на 10 валютах из-за невозможности точно представить 1/100. Вместо этого рассмотрим решение с фиксированной запятой или, возможно, десятичное число с плавающей запятой (это редко).

0 голосов
/ 21 ноября 2011

Это не сложно ... вам нужно преобразовать dollars в double 1 и добавить cents, умноженное на 0.01 (или деленное на 100. - обратите внимание на конечную точку, это означает, что 100. является константой double, поэтому / будет выполнять деление с плавающей точкой вместо целочисленного деления).

... но следует учитывать тот факт, что сохранениеденежные значения в двоичных переменных с плавающей точкой вообще не очень хорошая идея, потому что двоичные не имеют конечного представления многих «точных» десятичных величин (например, 0,1), которые будут храниться в приблизительном представлении.Работа с такими значениями может привести к «странным» результатам, когда вы начнете выполнять с ними некоторую арифметику.

  1. На самом деле, в зависимости от вашего выражения, это, вероятно, не нужно из-за неявных приведений.
...