![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
hash_2000 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
тут поднималась уже тема по поводу глюков в работе математических функций .Net ...
только по моему решение не исчерпывающее. вот столкнулся с проблемой округления. вот округляю с помощью Math::Round до второго знака после запятой число 141729.10560000001 как результат возвращает мне 141729.10999999999 ... ??? я впал в некоторый ступор ... уже была мысль самому написать функции для округления, но всетаки может ктонибудь знает решение этой проблемы |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
hash_2000, никакие это не глюки...это нормальное представление числа с плавающей точкой...
-------------------- СУВ, Partizan. |
|||
|
||||
Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 3 Всего: 13 |
Мне кажется что товарищ hash_2000 округлил не до второго знака, а до первого.
-------------------- ![]() |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
Bogdan1024, да нет...вполне таки нормальное округление до второго...
141729.10560000001 Округляем до второго, получаем 141729.10999999999... ~ 141729.11 -------------------- СУВ, Partizan. |
|||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: нет Всего: 11 |
Наверное, чтобы работало правильно, надо использовать тип decimal.
Я сам не пробовал, но по логике именно так и должно быть. Decimal означает "десятичный", в то время, как обычные double хранятся в двоичном представлении. А не любое дробное десятичное число может быть представлено конечной дробью в двоичной форме -- эти и приводит к таким результатам. Иными словами, надо округлять не 141729.10560000001 а 141729.10560000001m Буква "m" на конце означает десятичный тип. Сейчас проверю гипотезу... Добавлено через 7 минут и 2 секунды Чё-то у меня по всякому получается без глюков:
выдаёт 141729,11 141729,11 Добавлено через 11 минут и 25 секунд Не могу воспроизвести ошибку. Ни так, ни сяк. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |