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

Округление числа double до десятых, до сотых - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как задать массив n на m и заполнить его с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread889898.html
как задать массив n на m(n и m вводятся с клавиатуры) и заполнить его с клавиатуры?
C++ Класс "студент" Создать класс, состоящий из фамилии, имени и отчества студента, а также даты рождения. Вывести даты рождения студентов из Lipetsk. Код есть - только он не работает как надо, кто может - помогите поправить. Заранее спасибо. #include<iostream.h>; #include<string.h>; #include<conio.h>; #include<stdio.h>; class student { http://www.cyberforum.ru/cpp-beginners/thread889895.html
Класс производная в С++ C++
Здравствуйте, нужна Ваша помощь! Помогите написать программу на С++: создать класс производная.
C++ Lex и Yacc
Привет всем!=) может кто-нибудь кинуть литературу по Lex и Yacc, уж очень надо=) заранее благодарен=)
C++ Найдите прямую, содержащую биссектрису угла http://www.cyberforum.ru/cpp-beginners/thread889889.html
Найдите прямую, содержащую биссектрису угла, заданного вершиной X и двумя точками Y и Z на его сторонах. Помогите!!!
C++ Сумма элементов массива (Pascal -> C++) Прошу помочь с такой же прогой на си :) var n, s, i: integer; s1: integer; a: array of integer; begin readln(n); s := 0; for i := 1 to n do подробнее

Показать сообщение отдельно
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
03.06.2013, 23:27  [ТС]     Округление числа double до десятых, до сотых
ViktorKozlov, каш код выводит на экран, а мне в переменные вписать нужно.
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Как вариант, можно умножить это число на 10 или 100, округлить до целого и потом опять разделить и привести к вещественному
вот я пока только такой вариант решения и нашел

поясню, что вообще творю: у меня есть угол в градусах, нужно перевести его в минуты и секунды. Вот такое пока что наваял
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct dms
{
    int     grad;
    int     min;
    int     sec;
};
 
dms DmsConverter(double angle)
{
dms     myAngle;
double  x,y;
 
    x = modf(/*angle*/3.14,&y);
    myAngle.grad = y;
    myAngle.min = (static_cast<int>(x*10 + 0.5) )*6;
    myAngle.sec = static_cast<int>(( (static_cast<int>((x*100) + 0.5))%10)*0.6 + 0.5);
 
    printf("\n\n[DMS]\n %i.%i'%i''\n\n",myAngle.grad,myAngle.min,myAngle.sec);
 
return myAngle;
}
округление делает вот эта штука
C++
1
static_cast<int>(x +0.5)
Добавлено через 3 минуты
Genn55, кстати ваш вариант мне больше нравится, только не знаю чем. Наверное тем что я не понимаю, что такое
C++
1
static_cast<int>(x +0.5)
а про floor() уже читал и юзал

Добавлено через 5 минут
ps. только перевод градусы в минуты и секунды функция пока, что походу не правильно делает. Сверился с онлайн калькулятором
http://planetcalc.com/1129/

но суть то была в округлении. округление верно работает
просто мне немного кажется, что не красиво такое ну и не грамотно.

Добавлено через 4 минуты
Genn55, кстати почему floor(), а не ceil()?

Добавлено через 4 минуты
Genn55,
а еще ваш код не верно округляет для числа 3.1445
C++
1
double y=floor ((3.1445) * 100 + 0.5) / 100;
 
Текущее время: 06:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru