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

Операция с плавающей запятой - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Sifoncheg
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 13
26.04.2011, 15:31     Операция с плавающей запятой #1
float f=13565.0;
float x=0.01;
float z=f+x;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
26.04.2011, 15:32     Операция с плавающей запятой #2
Ага, прикольно и что ?
Sifoncheg
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 13
26.04.2011, 15:44  [ТС]     Операция с плавающей запятой #3
Там операция если я не ошибаюсь, связана со сдвигом...
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
26.04.2011, 16:02     Операция с плавающей запятой #4
Там операция - обычное сложение.
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
26.04.2011, 16:04     Операция с плавающей запятой #5
Задача то какая не тривиальная, 2 float сложить\
Sifoncheg
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 13
26.04.2011, 16:17  [ТС]     Операция с плавающей запятой #6
просто сложение происходит в разных системах счисления
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
26.04.2011, 16:18     Операция с плавающей запятой #7
Цитата Сообщение от Sifoncheg Посмотреть сообщение
float f=13565.0;
float x=0.01;
float z=f+x;
По идее 38, но во время войны может быть и 39
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
26.04.2011, 16:22     Операция с плавающей запятой #8
Цитата Сообщение от Sifoncheg Посмотреть сообщение
просто сложение происходит в разных системах счисления
Это с какого перепуга? Это просто два десятичных вещественных числа. Первое больше единицы, второе - меньше.
Sifoncheg
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 13
26.04.2011, 16:27  [ТС]     Операция с плавающей запятой #9
Цитата Сообщение от easybudda Посмотреть сообщение
Это с какого перепуга? Это просто два десятичных вещественных числа. Первое больше единицы, второе - меньше.


а если так можно просто сложить, или нужно преобразование какое то?
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.04.2011, 16:29     Операция с плавающей запятой #10
Вы их уже сложили в первом сообщении.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
26.04.2011, 16:36     Операция с плавающей запятой #11
Цитата Сообщение от Sifoncheg Посмотреть сообщение
так вроде если первое число 0 то 8ричная?
Вы круглое с красным путаете.
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main(void){
    int num;
    
    while ( printf("Number: ") && scanf("%i", &num) == 1 )
        printf("10 based number: %d\n", num);
    
    return 0;
}
Код
$ ./10based
Number: 077
10 based number: 63
Number: 77
10 based number: 77
Number: 0x77
10 based number: 119
Number:
а
C
1
double val = 0.1;
это всё те же ноль целых одна десятая...
Sifoncheg
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 13
26.04.2011, 16:42  [ТС]     Операция с плавающей запятой #12
и будет 13565.01?
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.04.2011, 16:46     Операция с плавающей запятой #13
C++
1
2
3
4
5
6
7
8
int main(int argc, char* argv[])
{
float f=13565.0;
float x=0.01;
float z=f+x;
printf("%.*f", 2, z);
return 0;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
26.04.2011, 16:47     Операция с плавающей запятой #14
Цитата Сообщение от Sifoncheg Посмотреть сообщение
и будет 13565.01?
ну должно бы... а проверить - не?
Sifoncheg
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 13
26.04.2011, 17:11  [ТС]     Операция с плавающей запятой #15
1>e:\проекты с++\2010\фы\фы\фы.cpp(12) : warning C4305: 'initializing' : truncation from 'double' to 'float'
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
26.04.2011, 17:14     Операция с плавающей запятой #16
Цитата Сообщение от Sifoncheg Посмотреть сообщение
1>e:\проекты с++\2010\фы\фы\фы.cpp(12) : warning C4305: 'initializing' : truncation from 'double' to 'float'
После констант надо букву f ставить, если они float: 13565.0f 0.01f
А вообще - это предупреждение, а не ошибка. Компилятор сам это как бы сделает, но тебя уведомляет об этом
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
26.04.2011, 17:16     Операция с плавающей запятой #17
Вообще лучше тип double для вещественных чисел. Но если так хочется, то вот:
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main(void){
    float x = 1234.0F;
    float y = .01F;
    float z = x + y;
    printf("%.2f", z);
    return 0;
}
Sifoncheg
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 13
26.04.2011, 17:33  [ТС]     Операция с плавающей запятой #18
135656.02 получается. Почему?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
26.04.2011, 17:37     Операция с плавающей запятой #19
Цитата Сообщение от Sifoncheg Посмотреть сообщение
135656.02 получается. Почему?
Цитата Сообщение от easybudda Посмотреть сообщение
лучше тип double для вещественных чисел
у float погрешность очень большая.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2011, 17:59     Операция с плавающей запятой
Еще ссылки по теме:

запись типов с плавающей запятой C++
C++ Класс : Число с плавающей запятой(точкой)
C++ Число с плавающей запятой в строках

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

Или воспользуйтесь поиском по форуму:
Sifoncheg
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 13
26.04.2011, 17:59  [ТС]     Операция с плавающей запятой #20
Цитата Сообщение от easybudda Посмотреть сообщение
у float погрешность очень большая.
я так понимаю это связано с округлением, только непонятно каким образом
Yandex
Объявления
26.04.2011, 17:59     Операция с плавающей запятой
Ответ Создать тему
Опции темы

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