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

Усечение числа с плавающей точкой - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
06.10.2012, 01:09     Усечение числа с плавающей точкой #1
Доброго времени суток!
Собсно сабж.
floor(v*1000)/1000
не помогает, обнуляется только несколько знаков после запятой, а остальные остаются. А как обнулить все, кроме первых пяти знаков?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 01:09     Усечение числа с плавающей точкой
Посмотрите здесь:

Точность числа с плавающей точкой C++
Как получить дробную часть числа с плавающей точкой? C++
C++ Выделить подстроку, которая соответствует записи вещественного числа с плавающей точкой
Отличить целое от числа с плавающей точкой в 32-разрядном регистре C++
Создать двумерный массив чисел с плавающей точкой и вывести на экран все числа по диагонали с лева на право C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
06.10.2012, 03:14     Усечение числа с плавающей точкой #2
А вы как это проверяете? видите в дебаге ненулевые значения после запятой в 8-10 знаке? что вроде такого:
было 1.344237
отбросили все знаки после запятой, кроме первых двух: 1.34
но в дебаге показано: 1.340000003

или как?
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
06.10.2012, 03:37  [ТС]     Усечение числа с плавающей точкой #3
I.M., да, так.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
06.10.2012, 03:54     Усечение числа с плавающей точкой #4
Тогда все ок - в пределах погрешности
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
06.10.2012, 03:54     Усечение числа с плавающей точкой #5
Invader_Zim, тогда поинтересуйтесь про особенности представления вещественных чисел в ПК
-=ЮрА=-
Заблокирован
Автор FAQ
06.10.2012, 10:45     Усечение числа с плавающей точкой #6
Invader_Zim, modf затем дробную часть умножить на 1Е5 записать в инт а затем разделить уже на 100000.0 и добавить к целой части.
-=ЮрА=-
Заблокирован
Автор FAQ
06.10.2012, 10:56     Усечение числа с плавающей точкой #7
Собственно вот 2 варианта
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
 
int main()
{
    double val = 5.123456789;
    cout<<"Input : "<<setprecision(15)<<val<<endl;
    cout<<"\tVariant 1 - setprecision(5)"<<endl;
    cout<<"val = "<<setprecision(5)<<val<<endl;
    double ipart;
    double fpart = modf(val,&ipart);
    cout<<"\tVariant 2 - modf + int(*10000)/10000"<<endl;
    cout<<"val = "<<val + int(fpart*10000)/10000<<endl;
    return 0;
}
http://codepad.org/6akigPUj

PS:О printf("%.5f",val) даже не упоминаю
Миниатюры
Усечение числа с плавающей точкой  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2012, 10:58     Усечение числа с плавающей точкой
Еще ссылки по теме:

перевод из десятичной системы счисления в двоичную числа с плавающей точкой C++
C++ Выделить подстроку, которая соответствует записи вещественного числа с плавающей точкой
C++ Ifstream считать из файла числа с плавающей точкой

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
06.10.2012, 10:58     Усечение числа с плавающей точкой
  #8

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
cout<<"val = "<<val + int(fpart*10000)/10000<<endl;
- это действиетльно обрезает дабл если именно обрезать а не вывести с опред точностью надо

Yandex
Объявления
06.10.2012, 10:58     Усечение числа с плавающей точкой
Ответ Создать тему
Опции темы

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