Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему 0.05 * 0.006 = 0.00030000000000000003? Странное поведение типа double 
:(
    Опции темы
mrHunter
Дата 22.7.2008, 12:31 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 23.7.2007

Репутация: нет
Всего: нет



Visual Studio 2005 & C#

Вот простенький пример кода:

Код

double a = 0.05;
double b = 0.006;
double c = a * b;


Останавливаю в режиме отладки и вижу, что c = 0.00030000000000000003. 20 знаков после запятой!!! Почему??? Ведь должно получиться 0.0003.... В чем дело, кто-нибудь может объяснить? Хотя для типа double в msdne четко сказано, 15 значащих цифр...

Это не благой интерес. Очень нужно, чтобы все было по нормальному...  Про проблемы с записью в БД я уже писал...
PM MAIL   Вверх
Fox21
Дата 22.7.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 6.8.2007

Репутация: нет
Всего: нет



Используй decimal
PM MAIL   Вверх
mrHunter
Дата 22.7.2008, 13:26 (ссылка)    | (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 23.7.2007

Репутация: нет
Всего: нет



Это компилятор такой кривой? Ну не должно же так быть... Да блин, такую простенькую операцию компилятор от Microsoft и то не мог правильно посчитать...
PM MAIL   Вверх
nikitao
Дата 22.7.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 4
Всего: 26



это отладчик такое показывает.  На практике все впорядке будет. не бушуйте на компилятор smile 


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
amarenkov
Дата 22.7.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Цитата(mrHunter @  22.7.2008,  12:31 Найти цитируемый пост)
в msdne четко сказано, 15 значащих цифр...


Ну, вот можно и не смотреть на цифры после 15 smile. А у вас там их 20. Иногда, кстати, такое бывает. Сталкивался.
PM MAIL ICQ   Вверх
FREEDEV
Дата 22.7.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 6.3.2007
Где: Украина->Одесс а

Репутация: 1
Всего: 3



Math.Round (Double, Int32)  в помощь
--------------------
Microsoft Windows Visla ©
PM MAIL   Вверх
Bishop
Дата 22.7.2008, 17:12 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 3.6.2005
Где: Минск, Беларусь

Репутация: 6
Всего: 16



Цитата(mrHunter)
Странное поведение типа double
Ничего странного в нём нет. Учите мат. часть. В гугле поиск по "представление вещественных чисел в ЭВМ".

Цитата(mrHunter @  22.7.2008,  12:31 Найти цитируемый пост)
для типа double в msdne четко сказано, 15 значащих цифр
ага, хотя бы там почитайте, сколько там "четко", и примечания почитайте для общего развития, и раздел "Using Floating-Point Numbers" не пропускайте.

Это сообщение отредактировал(а) Bishop - 22.7.2008, 17:12
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1076 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.