Я хотел бы преобразовать двойной (например, цену со значением 7.90) в целое число без потерь! Я делаю программу, которая обрабатывает деньги, и я должен вводить их в виде двойников, а затем конвертировать их в целые числа, чтобы я мог их выполнить, и, например, когда у меня есть 7,90 евро, и я хочу преобразовать их в центы, это будет выглядеть как 789 центов вместо 790! пожалуйста, помогите мне :) заранее спасибоПреобразование удвоений в целые числа
ответ
More specificaly the problem is that if it was a double it would originaly save 59.999999 instead of 60
Тип данных двойные переменные не способны хранить несколько значений точно, 60 является одним из этих значений, так что вы должны либо) использовать другой тип данных (с плавающей точкой страдает те же проблемы), или b) учитывать это, используя допуски в ваших проверках.
В вашем случае переменный показывает 59.9999999 просто потому, что его ближайшее этот тип double
данные может получить до 60.
@Magish Итак, что мне делать, чтобы сохранить его как 60? –
@KritonGeorgiou Почему это двойной тип для начала? – Magisch
@Magish Потому что упражнение попросило нас запросить деньги как удвоения, например 0,1 0,5 и т. Д. –
Одно из возможных решений:
Не следует использовать число с плавающей точкой на всех. Вместо того, чтобы говорить 1 Euro = 100 * 0.01 Euro
, рассчитать с помощью центов: 1 Euro = 100 Cents
. Рассчитайте с помощью Cents как целые числа и разделите на 100, если вам нужны евро.
Другая возможность:
При расчете больших сумм денег, где он не будет вписываться в целое число (может быть, даже не в длину), вы используете BigInteger
или BigDecimal
классов. Это обычный и, вероятно, лучший подход при работе с деньгами. Точность и количество цифр произвольны, но время обработки и использование памяти могут быть выше.
вот что я сделал! Я преобразовал их в центах, чтобы иметь возможность правильно делить числа! проблема в том, что он экономит 60, например, как 59 –
Не думаю, что вы понимаете, что я имею в виду. В вашем вопросе вы говорите о «7,90 евро», и вы вводите их в качестве парных. Невозможно получить ошибки округления, потому что вы не должны получать результат в два раза. Кроме того, я описал два возможных решения, поэтому «это то, что я сделал» представляется мне совершенно неприемлемым. Вы попробовали оба решения? Обратите внимание, что второй - обычный и рекомендуемый подход, как я сказал в своем ответе. –
- 1. Преобразование строк в целые числа
- 2. Преобразование строки в целые числа
- 3. Преобразование InputStream.read() в числа (не целые числа)
- 4. Матрица, содержащая целые числа вместо удвоений в Matlab
- 5. Преобразование всех удвоений в целые числа для лучшей производительности, это просто слухи?
- 6. Преобразование перечислений в QVariant в целые числа
- 7. Преобразование символов в целые числа в Java
- 8. Преобразование рациональных чисел в целые числа
- 9. Преобразование символов Ruby в целые числа
- 10. Преобразование шестнадцатеричных строк в целые числа
- 11. преобразование одной строки в отдельные целые числа
- 12. Преобразование содержимого строки в целые числа
- 13. Преобразование строк в целые числа на arm64?
- 14. Преобразование std :: string buffer в целые числа
- 15. Преобразование временных строк в целые числа
- 16. Преобразование строки чисел в целые числа
- 17. Преобразование строк в целые числа правильным образом
- 18. Преобразование индекса строки в целые числа
- 19. Преобразование строки в целые числа безопасным способом
- 20. Преобразование нецелочисленных в целые числа python
- 21. Преобразование последовательности строк в целые числа (Clojure)
- 22. MIPS Преобразование строк в целые числа
- 23. Преобразование списка строк в целые числа
- 24. Преобразование строки ASCII в шестнадцатеричные целые числа
- 25. Преобразование строки в целые числа, представляющие дату
- 26. Отрицательные целые числа> Положительные целые числа?
- 27. Преобразование строки (содержащей символы и целые числа) в целые числа и вычисление суммы в JAVA
- 28. Почему целые числа не поднимаются до удвоений, когда рассматриваются как объекты и сравниваются?
- 29. Преобразование числа из ввода с/без разделителей на целые числа
- 30. Целые числа в BASIC
1) Пожалуйста, создайте полный, минимальный и проверяемый пример, 2) пожалуйста, пометьте, какой язык программирования это – Magisch
@Magisch Я отредактировал его и сказал, что основная проблема –
Не могли бы вы использовать английские имена переменных, по крайней мере для пример? Даже при написании кода только для себя рекомендуется использовать английские имена, так как вы почти никогда не можете быть уверены, что никто больше не сможет его прочитать. –