погрешность чисел в doubleSpinBox |
Здравствуйте, гость ( Вход | Регистрация )
погрешность чисел в doubleSpinBox |
voipp |
14.11.2010, 1:00
Сообщение
#1
|
Участник Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: 0 |
Вообщем имеется у меня DoubleSpinBox.Переменной "a" присваивается значение из дабл спинбокса.Но это значение с погрешностью в 3 десятитысячных(или что-то типо того).Для меня это очень важно.Как добиться абcолютной точности?
Сообщение отредактировал voipp - 14.11.2010, 1:06 |
|
|
Litkevich Yuriy |
14.11.2010, 1:17
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
voipp |
14.11.2010, 18:49
Сообщение
#3
|
Участник Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: 0 |
хорошо вопрос такой: как мне сделать так чтобы в переменной было значение без погрешности? Неужели никак?
|
|
|
ernie |
14.11.2010, 19:12
Сообщение
#4
|
Участник Группа: Участник Сообщений: 130 Регистрация: 13.5.2010 Из: Irkutsk Пользователь №: 1712 Спасибо сказали: 11 раз(а) Репутация: 1 |
voipp,разные типы переменных дают разную точность после запятой,вообзе без погрешности конечно не будет,но если возьмешь правильный тип,то хорошую точность можно получить
|
|
|
Алексей1153 |
14.11.2010, 20:42
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
хорошо вопрос такой: как мне сделать так чтобы в переменной было значение без погрешности? Неужели никак? хранить по возможности все исходные данные в виде целых чисел (далеко не всегда возможно) например, вместо double x=1/3; хранить int x_nom=1; int x_den=3; только зачем ? |
|
|
voipp |
14.11.2010, 20:48
Сообщение
#6
|
Участник Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: 0 |
у меня просто из doublespinbox в переменную заносится значение шага.Если шаг равен 0,2 то в переменной может хранится 0,199(9).И соответственно при вычислении количества шагов на отрезке я получаю неправильный результат.Нашел единственный выход: применять функцию ceil(x) (возвращает значение double, представляющее наименьшее целое, которое больше или равно x.).А если значение превышает истинное, то просто привожу его к int.Коряво, но иначе не могу
|
|
|
Litkevich Yuriy |
14.11.2010, 21:03
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
voipp |
14.11.2010, 21:45
Сообщение
#8
|
Участник Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: 0 |
0,199(9) я имел ввиду 9 в периоде - 0,19999999...
Да, я в спинбоксе устанавливаю значение 0,2 а в переменную читается 0,19999... Я пробовал менять тип данных переменной - float double.Но все равно погрешность возникает |
|
|
Litkevich Yuriy |
14.11.2010, 22:41
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 30.11.2024, 4:56 |