Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fazex
Сообщений: n/a
#1

atof округляет число - C++

25.03.2012, 13:21. Просмотров 1100. Ответов 2
Метки нет (Все метки)

Здравствуйте,
мне необходимо считать коэффициенты из текстового файла и обработать их, проблема возникла при преобразовании символов в число. Функция atof округляет число до 7-го знака, хотя тип double вроде поддерживает большую точность. Использую Visual C++ 2010
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
#include <iostream> 
#include <stdlib.h>
using namespace std;
void file_proc();
FILE *fp;
FILE *fopen(char *name, char *mode);
char numb[26]; //текстовое представление коэффициента
int main()
{   
    
    file_proc();
    system("PAUSE");
    return 0;
}
 
void file_proc()
{
    int j=0;
    char ans;
    cout << "read coefficients? (y/n)" << '\n';
    cin >> ans;
    if (ans == 'y') 
    {
        fp = 0;
        fp = fopen("coefficient_file_HF.flt", "r");
        if (fp != NULL)
            { 
                // определяем длину файла
                 fseek(fp,0,SEEK_END); long len = ftell(fp);
                // выделяем буфер необходимого размера
                char *buf=new char[len+1];
                // смещаем указатель на начало файла и
                // считываем файл в буфер
                fseek(fp,0,SEEK_SET);
                 fread(buf, len,1, fp); buf[len]='\0';
                
                for (int i=373; i != 398 ; i++)
                {
                    numb[j] = buf[i];
                    j++;
                                    
                    
                 } 
                
                cout << numb << '\n';
                cout << atof(numb) <<'\n';
    
        }
        fclose(fp);
    }
}
вывод программы:
read coefficients? (y/n)
y
-.182809537974057541E-02
-0.0018281
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2012, 13:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос atof округляет число (C++):

округляет число - C++
такой код class fugyr { protected: int x,y; public: virtual void show()=0; virtual void set() {

Atoi, atof. - C++
Подскажите пожалуйста, как с помощью функций atoi, atof, проверить, является ли данное число действительным? Добавлено через 21 минуту...

atof и atoi - C++
Помогите пожалуйста, разобратся что такое atof, atoi, как работает, что делает?

использование функции atof - C++
требуется в качестве параметра на atof подавать не char* а string переменную(из библиотеки &lt;string&gt;) как это делается скажите...

Функции atoi и atof - C++
Здравствуйте, пишу парсер для файла определенного формата (фактически лексический и синтаксический анализаторы), так вот среди данных...

Русский шрифт и функция atof() - C++
Привет всем! Подскажите, как правильно в программах на С++ делать вывод русского шрифта в консоль. Я пишу такую строку: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Duha666
51 / 51 / 5
Регистрация: 10.03.2012
Сообщений: 138
25.03.2012, 13:28 #2
Дело не в atof, а в выводе cout. Там стандартная точность - 7 знаков.
C++
1
2
#include <iomanip>
cout << fixed << setprecision(20) << atof(numb);
1
Fazex
Сообщений: n/a
25.03.2012, 13:34 #3
Спасибо, теперь все ок
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2012, 13:34
Привет! Вот еще темы с ответами:

X=atof(s.c_str()); - ошибка в Builder10 - C++
Здравствуйте ! Помогите, пожалуйста, чайнику. Проблема такая: Создаю учебный проект простого калькулятора. Обработчик щелчка по...

Функция atof() возвращает не точное значения - C++
Добрый день подскажите может кто знает есть программа в MFC фрагмент кода void Ce_weightDlg::OnBnClickedButton1() // зважування { ...

Как написать свою функцию atof() - C++
Как написать свою функцию atof()?

Преобразование char* в double (функции atof и strtod) - C++
Добрый вечер и с праздником!!! Возник вопрос с функциями atof и strtod. А точнее проблемы с округлением (пример: вводим с консоли &quot;0,3&quot; ,...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru