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

Округлить число до 25 знаков после десятичной точки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переделать программу (курсовая) http://www.cyberforum.ru/cpp-beginners/thread714822.html
Здравствуйте! Есть готовая написанная прогграмма на тему "Теплица". Мне нужно полностью её просто переделать на тему "Пароходство" тоесть придумать свои классы, название и типы данных переписать,...
C++ Как вернуть сразу 2 значения массива в функции? Собственно дан у меня например массив "aa", где l-левая граница, а r-правая. При выполнении кода мне надо сразу вернуть эти два стоящих рядом друг с другом значения и вывести их на экран. Как это... http://www.cyberforum.ru/cpp-beginners/thread714817.html
C++ Элементарные задачи по C++
В универе препод задал написать программы, а я в программировании полный ноль. Пожалуйста, помогите, кто чем может) Задача 1. Есть одномерный массив (вектор) из 10 элементов. Вводится 2 числа...
Пытаюсь создать dll в VS2008 и что то не так выходит, Нашел пример и все по нему делал C++
myDLL.c #include <windows.h> #include <stdio.h> #include "time.h" #include "string.h" #include <time.h> #include "MyDLL.h"
C++ сумма элементов http://www.cyberforum.ru/cpp-beginners/thread714781.html
Есть список. Это многочлен вида znach*xstep struct list{ int step, znach; list* next;}; //Ссылка на следущий элемент списка struct dyn_list { list* head; // Первый элемент (голова) списка...
C++ Определить кольцо с центром в начале координат, которое содержит все точки В одномерном массиве с четным количеством элементов (2N) находятся координа-ты N точек плоскости. Они располагаются в следующем порядке: x1, y1, х2, у2, х3, у3, и т.д. Определить кольцо с центром в... подробнее

Показать сообщение отдельно
Арсен_
2 / 2 / 0
Регистрация: 25.11.2012
Сообщений: 27
01.12.2012, 12:26  [ТС]
Как я помню при округлении есть такое привило: если первая отброшенная или замененная нулем цифра < 5, тогда ее оставляют без изменения, иначе увеличиваем на 1

Добавлено через 32 минуты
Задачу решил, таким способом:

C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
#include <string>
 
int main()
{
    std::fstream I("input.txt"), O("output.txt", 2);
    std::string e = "2.7182818284590452353602875";
    int N; I >> N;
    (N == 0) ? O << 3 : O << e.substr(0, N + 1) 
        << (e[N + 2] > '4' ? char(e[N + 1] + 1) : e[N + 1]);
}
округление такое: если надо окурглить до n знаков мы проверяем только n + 1 число если >= 5 тогда увеличиваем на 1 иниче нечего не делаем.

Так что это за кривое округление? если нам надо число e = 2.7182818284590452353602875
округлить до 13 знаков то получается 2.7182818284590

а если мы до стольких же знаков округлим постепенно, тоесть, сначало до 24, потом до 23,22,21 ... 13, то получиться 2.7182818284591

Вроде я не нарушая некаких привил математического округления не нарушал, а получились совершенно разные ответы.

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