2016-10-24 2 views
0

У меня есть один столбец в базе данных с типом даннымиDouble.Parse точность/Округление проблема

десятичных (24,10)

Пусть Предположим, у меня есть значение как

строка d1 = "123.6666666666";

Double.Parse(d1) 

выход в DataColumn: 123,6666666700

Я использовал Convert.ToDecimal(d1) который дает OUTPUT +123,6666666666.

Ожидаемый результат: 123,7000000000

+0

Возможный дубликат [double.parse возвращает разницу точность] (http://stackoverflow.com/questions/6190120/double-parse-return-a-precision-difference) – Magnetron

+0

@Magnetron Пожалуйста, проверьте вопрос сейчас. – Mukund

+1

Math.Round (Convert.ToDecimal (d1), 1) – Cato

ответ

1

Выход вы получили потому, что точность двойных и десятичных значений. То, что вы actualy хотите, чтобы округлить число до 1 дробной цифры, для этого вы должны использовать Math.Round, либо с двойной или десятичной, в соответствии с вашими потребностями, например:

Math.Round(Double.Parse(d1),1) 

Или, если вы нужно

Math.Round(Convert.ToDecimal(d1),1) 

Для получения дополнительной информации о Math.Round, проверьте ссылку MSDN: https://msdn.microsoft.com/pt-br/library/75ks3aby(v=vs.110).aspx

+0

Какова точность двойных и десятичных чисел? – Mukund

+0

@Mukund double: 15-16 цифр; десятичная: 28-29 значащих цифр. https://msdn.microsoft.com/pt-br/library/678hzkk9.aspx https://msdn.microsoft.com/library/364x0z75.aspx, если вы хотите сохранить полное значение и отображать только 1 цифру, вы можете use .ToString ("0. #") – Magnetron

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