2017-02-23 3 views
1

Мы храним суммы денег/валюты в базе данных, например, четыре цифры после десятичной точки: например. 12.8665Сравнение десятичного ввода пользователя с десятичной суммой C#

Допустим, у меня есть Order класс в C#, которые имеют два свойства:

decimal TotalAmountDue; 
decimal UserInput. 

Все суммы на веб-странице, дисплей как totalAmountDue.toFixed(2). Это означает, что пользователю отображается 12.87. Пользователь вводит число 12.87 в виде веб-формы. Когда я сравниваю значение C# UserInput >= TotalAmountDue, это не возвращает true, потому что в C# не было выполнено преобразование, эквивалентное toFixed.

Q1. Как это преобразование можно сделать, чтобы я мог сравнить два десятичных знака?

Q2. Является ли это плохая идея хранить 4 цифры после десятичного числа в db, поскольку мы показываем только 2 пользователям?

ответ

0

использовать

Math.Round(yourValue, 2, MidpointRounding.AwayFromZero) 

, если только валюта.

Если вам требуется только 2 десятичных знака, зачем хранить больше этого. Без валюты.

+0

Спасибо. Эти суммы в основном являются ценами. что означает MidpointRounding.AwayFromZero? – Iffi

+0

Это как обычно округлить. Дополнительную информацию см. На странице https://msdn.microsoft.com/en-us/library/system.midpointrounding(v=vs.110).aspx. –

0

Вы можете просто круглое десятичной до двух цифр с

Math.Round(fourDigitDecimal, 2) 

и сравнить его потом с двузначным десятичным.

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