Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 12.09.2013
Сообщений: 42

Как избавиться от погрешности при выводе double?

10.10.2013, 18:20. Показов 3117. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
После того, как считал строку "3,2", перевожу во float, затем складываю с другим числом и получаю хрень непонятную
что-то вроде 1,2+2= 3,200000000476876.
В чем может быть проблема, как получать чистый ответ в виде: 1,2+2= 3,2?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2013, 18:20
Ответы с готовыми решениями:

Как избавиться от мерцания при выводе массива?
вообщем есть массив 20x50. и его нужно часто выводит на консоль и происходит мерцание. что можно сделать чтоб его не было?

Как избавиться от экспоненциального вида при выводе числа
Вот программа, которая вычисляет факториалы чисел от 0 до 20. Факториал для чисел от 10 до 20 представляется в экспоненциальной форме. Как...

Накопление погрешности при выводе константы по циклу
Интересный эффект... пытался интегрировать по Симпсону, но обнаружил этот эффект. Кто подскажет, как от этого избавиться... ??? ...

7
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
10.10.2013, 20:29
C++
1
2
    float ff = 1.2+2;
    Edit1->Text = FormatFloat("0.0",ff);
Комп использует разложение в ряды и всё такое, поэтому у него float 2 + float 2 никогда не = 4
0
0 / 0 / 0
Регистрация: 12.09.2013
Сообщений: 42
10.10.2013, 20:53  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
C++
1
2
    float ff = 1.2+2;
    Edit1->Text = FormatFloat("0.0",ff);
Комп использует разложение в ряды и всё такое, поэтому у него float 2 + float 2 никогда не = 4
У меня такой код:
C++
1
2
3
4
5
  void My_math::input_num(AnsiString s)
{
   float x = StrToFloat(s);
   ary.push_back(x);
}
C++
1
2
3
4
5
6
7
  
Как в вектор засунуть сразу в формате "0.0"? 
  void My_math::input_num(AnsiString s)
{
   float x = StrToFloat("0.0",s);
   ary.push_back(x);
}
мб так?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
10.10.2013, 20:56
При чем тут это. Вас же не устраивают ЛИШНИЕ знаки после запятой при ВЫВОДЕ числа. Я и предложил функцию форматированного вывода, в котором определена точность представления результата...
0
0 / 0 / 0
Регистрация: 12.09.2013
Сообщений: 42
10.10.2013, 21:02  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
При чем тут это. Вас же не устраивают ЛИШНИЕ знаки после запятой при ВЫВОДЕ числа. Я и предложил функцию форматированного вывода, в котором определена точность представления результата...
я беру числа из массива
C++
1
  с= FormatFloat("0.0",ary[0])+FormatFloat("0.0",ary[1]);
"cannot convert Ansistring to float"
FormatFloat назначает точность?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
10.10.2013, 21:13
.. судя по прежним записям - ary у вас не массив, а структура (с массивом, возможно).
"0.0" определяет число выводимых после запятой знаков; в данном случае - один. Если до тысячных - то так: "0.000"
0
0 / 0 / 0
Регистрация: 12.09.2013
Сообщений: 42
10.10.2013, 21:20  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
.. судя по прежним записям - ary у вас не массив, а структура (с массивом, возможно).
"0.0" определяет число выводимых после запятой знаков; в данном случае - один. Если до тысячных - то так: "0.000"
ary - вектор, когда вытаскиваю из него элементы так
C++
1
с= FormatFloat("0.0",ary[0])+FormatFloat("0.0",ary[1]);
ошибка, не может преобразовать из ansistring во float(
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
10.10.2013, 21:24
Цитата Сообщение от Alex_Os Посмотреть сообщение
не может преобразовать из ansistring во float(
Первый признак - точка-запятая не соответствуют его пониманию float...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.10.2013, 21:24
Помогаю со студенческими работами здесь

Как изменить кол-во знаков после запятой при выводе значения свойства типа double в PropertyGrid
Мне нужно "обрезать хвост" у свойства типа double, но только при выводе в PropertyGrid, т. е. вариант типа: public double x { ...

Невразумительная точка останова при выводе double
Возникла небольшая проблемка в коде: void main() { int* mass; mass=(int*)malloc(sizeof(int)); I_List lst; double...

Тип double округляется при выводе в консоль
Здравствуйте! Вопрос такой: Есть тип double у которой максимальная вместимость 1.7 * 10^308 Мне надо хранить числа с макс...

Как избавиться от символов \??\ в выводе списка драйверов wmic?
Приветствую :) Есть скрипт: @echo off set TAG=???? if "%TAG%"=="????" set /p "TAG=Введите тег для поиска: " for...

Избавиться от погрешности в выделении дробной части
Нужно избавиться от погрешности в выделении дробной части #include <stdio.h> #include <math.h> int main() { int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru