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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
#1

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

06.10.2012, 01:09. Просмотров 1265. Ответов 7
Метки нет (Все метки)

Доброго времени суток!
Собсно сабж.
floor(v*1000)/1000
не помогает, обнуляется только несколько знаков после запятой, а остальные остаются. А как обнулить все, кроме первых пяти знаков?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 01:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Усечение числа с плавающей точкой (C++):

Конструирование значения целого числа или числа с плавающей точкой по его дампу - C++
Как сконструировать значения целого числа(char, short int, long int) или числа с плавающей точкой(float,double) по его дампу(bin,oct,hex)??

Округлить числа с плавающей точкой - C++
Подскажите почему работает неправильно! Не округляет, а выдает только числа до запятой! Исправьте пожалуйста!! Вот задание: Строка...

Вывод числа с плавающей точкой - C++
Доброго всем времени суток. Пытаюсь вывести число с плавающей запятой на LCD. long int Eb = 0x5959; char st_Ebf = ""; ...

Точность числа с плавающей точкой - C++
У типа float числа одинарной точности с плавающей запятой обеспечивают относительную точность 7-8 десятичных цифр. Внимание, вопрос!...

числа с плавающей точкой после деления - C++
Помогите, какая тут ошибка? мне нужно чтобы вышло числа с плавающей точкой после деления( например, 13/2=6,5), а у меня почему то выходит...

Неправильный вывод числа с плавающей точкой - C++
Здравствуйте. Почему когда я ввожу число с плавающей точкой, например, 43.2300012, а затем вывожу его, то при выводе печатается не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
06.10.2012, 03:37  [ТС] #3
I.M., да, так.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
06.10.2012, 03:54 #4
Тогда все ок - в пределах погрешности
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
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) даже не упоминаю
Миниатюры
Усечение числа с плавающей точкой  
-=ЮрА=-
06.10.2012, 10:58     Усечение числа с плавающей точкой
  #8

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2012, 10:58
Привет! Вот еще темы с ответами:

Ifstream считать из файла числа с плавающей точкой - C++
Здравствуйте форумчане. Поток std::ifstream хорошо считывает целые числа, но когда дело доходит до числе с плавающей точкой он считывает...

Отличить целое от числа с плавающей точкой в 32-разрядном регистре - C++
Есть следующий union: union { int i; float f; } i_f; Как можно определить, какие данные в настоящий момент находятся...

Как получить дробную часть числа с плавающей точкой? - C++
Допустим, перед тем как вызвать функцию факториала, мне необходимо совершить проверку аргументов. Чтобы проверить, целое ли число, мне...

Перевод числа с плавающей точкой из шестнадцатиричного в двоичный вид - C++
int x; cin &gt;&gt;hex &gt;&gt; x; cout &lt;&lt; bitset&lt;sizeof(int) * 8&gt;(x); Что нужно изменить?)


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

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

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