С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
2 / 2 / 1
Регистрация: 08.11.2014
Сообщений: 25
1

Как отбросить сотые без округления?

04.03.2015, 19:12. Показов 5776. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть число, например, 3,46 как отбросить сотые, чтобы число получилось просто 3,4?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2015, 19:12
Ответы с готовыми решениями:

Как найти и вывести на экран сотые
int main() { long long worldPopulation, populationUs; cout << "Enter the world's population:...

Как отбросить пробелы после числа?
Нужно чтобы программа не считала пробел за символ. Когда я ввожу пробелы перед числом то он их...

Как отбросить последние символы строки
У меня есть строка. В ней, ну пусть 20 символов. А мне только первые 10 нужны. Подскажите...

Как убрать округления
Вообщем есть набор чисел. Например: visual studio округляет число типа double - вместо 22995,56...

17
Модератор
Эксперт С++
13714 / 10913 / 6476
Регистрация: 18.12.2011
Сообщений: 29,141
04.03.2015, 19:21 2
C++
1
2
double a=3.46;
double b=int(a*10.0)/10.0;
1
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
04.03.2015, 19:24 3
Цитата Сообщение от Просто Ромашка Посмотреть сообщение
как отбросить сотые
C++
1
2
double a=3.46;
double b = (int)(10*a)/10.0;
Добавлено через 1 минуту

Не по теме:

Опять не успел!:)

0
806 / 533 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
04.03.2015, 19:27 4
Цитата Сообщение от Байт Посмотреть сообщение
double b = (int)(10*a)/10.0;
Взрощен на Си? =)
0
Байт
04.03.2015, 19:32
  #5

Не по теме:

Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Взрощен на Си?
Когда меня ростили, Страуструпп еще под стол пешком ходил.:)

0
zss
04.03.2015, 19:36
  #6

Не по теме:

Байт,
Страуструп родился 30 декабря 1950. Т.е. ему 64 года. А сколько тогда Вам?
Я тоже не любитель писать static_cast<int>(a*10.0)...
Хотя и понимаю причину создания таких конструкций.

0
Байт
04.03.2015, 19:42
  #7

Не по теме:

Цитата Сообщение от zss Посмотреть сообщение
Т.е. ему 64 года
Спасибо за информацию. Значит, в случае знакомства, я могу разрешить ему называть меня на "Ты":D

0
2 / 2 / 1
Регистрация: 08.11.2014
Сообщений: 25
04.03.2015, 19:56  [ТС] 8
что то лыжи не едут... решаю задачу, вводим трехзначное число, нужно разделить его на цифры и вывести через пробел, получается взять первую и последнюю цифру, а та что по середине никак... делю число на 100, потом пытаюсь отбросить сотые, но что то никак
0
Croessmah
04.03.2015, 19:57
  #9

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Значит, в случае знакомства, я могу разрешить ему называть меня на "Ты
приятно :) :D

0
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
04.03.2015, 20:09 10

Не по теме:

Цитата Сообщение от Просто Ромашка Посмотреть сообщение
что то лыжи не едут
Смазать надо... Или пешком идти...:)

О существовании операции взятия остатка от целочисленного деления слыхал (%) ? Код хоть покажи..
Но вообще-то делается вот так
C++
1
cout << n/100 << " " << (n%100)/10 << " " << n%10 << endl;
0
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.03.2015, 20:16 11
Цитата Сообщение от Просто Ромашка Посмотреть сообщение
Есть число, например, 3,46 как отбросить сотые, чтобы число получилось просто 3,4?
Без округления ни как, так как это и есть округление. Просто можно округлять по разным правилам. Можно вниз, тогда младшие разряды просто отбрасываются, можно вверх, тогда если младшие разряды не равны нолю, то они отбрасываются, после чего число увеличивается на 1 младшего из оставшихся разрядов. Можно в зависимости от цифры в младшем остающемся разряде, если она чётная, то вверх, а если не чётная, то вниз. Можно округлять к ближайшему целому, тогда если младшие разряды превышают половину единицы младшего из остающихся разрядов, то вверх, если меньше, то вниз. И тогда при равенстве можно поступать опять по разному. Вверх при равенстве, вниз при равенстве, или в зависимости от чётности цифры в младшем из остающихся разрядов. Можно придумать ещё что нибудь.
0
2 / 2 / 1
Регистрация: 08.11.2014
Сообщений: 25
04.03.2015, 20:17  [ТС] 12
Цитата Сообщение от Байт Посмотреть сообщение
Код хоть покажи.
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
#include <math.h>
#include <iostream>
#include <locale.h>
#include <conio.h>
 
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
    
    setlocale(LC_ALL, "rus");
    int a;
    cout << "Введите трехзначное число" << endl;
    cin >> a;
    int d = a % 10;
 
    double k;
        k = a/100;
    k = (int)(k*10)/10.0;
 
    int b = a/100;
    b = b % 10;
 
    cout << b << ' ' << k << ' ' << d;
    _getch();
    return 0;
 
}
0
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
04.03.2015, 20:22 13
Просто Ромашка,
C++
1
2
3
4
int b = a/100;
int c = (a%100)/10;
int d = a%10;
cout << b << c << d;
1
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.03.2015, 20:25 14
Цитата Сообщение от Просто Ромашка Посмотреть сообщение
что то лыжи не едут... решаю задачу, вводим трехзначное число, нужно разделить его на цифры и вывести через пробел, получается взять первую и последнюю цифру, а та что по середине никак... делю число на 100, потом пытаюсь отбросить сотые, но что то никак
Это делается не так. Если число заведомо трёхзначное, то
C++
1
std::cout<<x/100<<" "<<(x/10)%10<<" "<<x%10;
. Иначе
C++
1
2
3
4
5
6
7
for (b=x, n=0; (b/10)!=0; ++n, b/=10);
for (i=n; i>0; --i)
{
 for (b=x, j=0; j<=i; ++j, b/=10);
 std::cout<<b%10<<" "; 
}
std::cout<<x%10;
.
0
2 / 2 / 1
Регистрация: 08.11.2014
Сообщений: 25
04.03.2015, 20:26  [ТС] 15
ыыыы
а ларчик просто открывался...
0
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.03.2015, 20:26 16
Ещё можно преобразовать в строку и вывести её в цикле через пробел.
0
2 / 2 / 1
Регистрация: 08.11.2014
Сообщений: 25
04.03.2015, 20:34  [ТС] 17
только начали учить с++, понятия не имею как это сделать...)
0
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
05.03.2015, 05:32 18
Например, так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char s[sizeof(x)*4];
int N=sizeof(x)*4-1;
int n;
int i;
int b;
for (b=x, n=0; (b/10)!=0; b/=10; ++n)
{
  s[N-n]='0'+(b%10);
}
for (i=n; i>0; --i)
{
 std::cout<<s[N-i]<<" ";
}
std::cout<<s[N];
.
0
05.03.2015, 05:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2015, 05:32
Помогаю со студенческими работами здесь

Как избавиться от округления
Доброго времени суток. У меня следующая проблема. pp = 0.1534886 + 151.5235 - 0.15668835467; pp...

Как убрать остаток без округления
???

Как вывести результат 1 / 3 без округления?
Python 3.2 Всем доброго времени суток. Читаю книгу Лутца (Изучаем, 4-изд). Приммерах показано...

Как получить результат без округления и сокращения
Подскажите пожалуйста, как получить результат без округления и сокращения? a =...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru