Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: СРОЧНО!!! БАГ???VS2003 Добавлено: 06.07.08 14:12  

Автор вопроса:  х3м
ДОброго времени суток простая арифметика

Dim na, ko As Double
Dim dlina as Double
rast = (ko - na) / dlina
Return rast

при значениях
na=3.6
ko=4.7
dlina=88

rast=-0.012499999999999935
а простые действия на калькуляторе -0.0125
Изза чего такие результаты у VS2003

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 х3м



Вопросов: 9
Ответов: 21
 Профиль | | #1 Добавлено: 06.07.08 14:34
Т. е. при этих знач.
na=183.6
ko=184.7
dlina=88

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 06.07.08 14:57
1.1 не может быть точно представлено типом double.

Ответить

Номер ответа: 3
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #3 Добавлено: 06.07.08 16:14
попробуй вместо Double использовать Decimal, или округляй.

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 06.07.08 16:14
+1

Ответить

Номер ответа: 5
Автор ответа:
 х3м



Вопросов: 9
Ответов: 21
 Профиль | | #5 Добавлено: 06.07.08 18:20
как это неможет если мы подставляем 4.7 и 3.6 все спокойно представляется, а если подставляем 84,7-83,6 то получаем цифру чуть большую чем 1.1 кто нибудь объясните мне??? И почему при след. действии я получаю
Round(Abs(-0.0125), 3)=0.012 ведь по правилам округления
должно быть 0.013

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 06.07.08 18:31
http://msdn.microsoft.com/en-us/library/zy06z30k.aspx
Функция Round выполняет банковское округление - если последний знак 5, то выполняется округление к ближайшему четному числу.

Если ты хочешь получать 0.013, то используй другую перегрузку:

Console.WriteLine(Round(Abs(-0.0125), 3, MidpointRounding.AwayFromZero))

Ответить

Номер ответа: 7
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 06.07.08 18:56
По первому вопросу читаем и медитируем:

http://ru.wikipedia.org/wiki/Числа_с_плавающей_запятой

Как уже сказали, если нужна абсолютная точность, используй Decimal

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам