2014-11-05 2 views
-5

Я пытаюсь сохранить промежуточный итог заказа предметов в программе, которую я делаю в Visual Studio 2012. У меня есть эта часть работы. Однако, когда я пытаюсь сделать код, чтобы делать налоги, а затем новый итог, что-то не работает. Вот что я до сих пор. Извините, у меня была бы копия всего кода, но на другой машине, у которой возникли проблемы с подключением к Интернету. Под кнопкой при нажатии (три переменных уже объявлен: субтотальный, налог, общий, каждый заказывает пользователь что-то новое, субтотальный обновляются.)Расчет налога

tax = 0.02 * subtotal 
total = subtotal + tax 
... 

Прямо сейчас это просто дает мне подытог, и налог в 0 и суммарно то же, что и промежуточный итог. У меня есть переменные, объявленные как целые числа. Почему не работает налог? Я использую Visual Basic ...

+0

Какой язык вы используете? «Visual Studio 2012» не является языком программирования. Вам нужно отправить сообщение [MCVE] (http://stackoverflow.com/help/mcve). – ElGavilan

+0

* целое число * не может содержать дробные числа. VB.Net позволит присвоить двойной (0,02), но применяется округление. Используйте более подходящий тип, например * Десятичный *. –

+0

хорошо подумал, что может быть проблема ... Я все еще новичок в этом ... –

ответ

0

Если переменные объявлены как int или Integer (ваш код выглядит VB.NET), то результаты с плавающей точкой будут получить округление до ближайшего целого значения - целые числа могут содержать только целочисленные значения, а не дроби. Для хранения дробных значений вам необходимо использовать либо Single, либо Double. Прочтите documentation типов данных, чтобы понять различия.

Если вы выполняете финансовые расчеты, используйте тип данных Decimal - Single и Double предназначены для научных расчетов, но они не подходят для представления точных дробных значений при произвольной точности. Для финансовых расчетов, где вам нужны точные дробные значения с заданной точностью, нужный тип Decimal.

Мы не знаем значение subtotal, но если оно маленькое, то умножение на 0.02 превратит его в 0.

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

+0

спасибо ... работаю сейчас! –

+0

@SaraSelf Я рад, что все получилось. Можете ли вы принять этот ответ, если это было полезно? – xxbbcc

+0

как я могу отформатировать текст как валюту? –

Смежные вопросы