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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ минимальный элемент http://www.cyberforum.ru/cpp-beginners/thread527451.html
Написать программу, которая выводит минимальный элемент введенного с клавиатуры одномерного массива целых чисел. Для доступа к элементам массива использовать указатель.
C++ преобразование типов memcpy((void*)stroka,(void*)stroka,ykaz_bukva-ykaz_temp+1); что нужно поставить вместо void* чтоб не было предупреждений http://www.cyberforum.ru/cpp-beginners/thread527450.html
Работа с динамической памятью через указатели. Загадочная ошибка. C++
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. Есть такая задача: Создать массив из N целых чисел, N вводит пользователь. Заполнить массив случайным образом в диапазоне от 1 до...
Печать значения EOF C++
Упр.1.7. Керниган,Ритчи.Написать программу,печатающую значение EOF.Натолкните на мысль.Заранее благодарен.
C++ Реализация Singleton http://www.cyberforum.ru/cpp-beginners/thread527421.html
Приветствую. Пытался реализовать паттерн проектирования Singleton для лога след. образом: class Logger { public: void log (const std::string& logMessage) const; static Logger&...
C++ Необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - обработка списка. Сначала в программе должен Вывести на экран все записи товаров, определенного ценового диапазона. Ценовой диапазон указывается пользователем. ТОВАР: наименование товара (строка 15 символов); единицы измерения (строка 5... подробнее

Показать сообщение отдельно
Fazex
Сообщений: n/a

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

25.03.2012, 13:21. Просмотров 1129. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru