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

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

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

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

25.03.2012, 13:21. Просмотров 1034. Ответов 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++ Atoi, atof.
C++ atof и atoi
C++ округляет число
Функции atoi и atof C++
C++ X=atof(s.c_str()); - ошибка в Builder10
Как написать свою функцию atof() C++
Функция atof() возвращает не точное значения C++
C++ При делении округляет
использование функции atof C++
Округляет значение double C++
C++ Русский шрифт и функция atof()
C++ Преобразование char* в double (функции atof и strtod)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
25.03.2012, 13:28     atof округляет число #2
Дело не в atof, а в выводе cout. Там стандартная точность - 7 знаков.
C++
1
2
#include <iomanip>
cout << fixed << setprecision(20) << atof(numb);
Fazex
Сообщений: n/a
25.03.2012, 13:34     atof округляет число #3
Спасибо, теперь все ок
Yandex
Объявления
25.03.2012, 13:34     atof округляет число
Ответ Создать тему
Опции темы

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