Официальный сайт студ.городка НГТУ
Программирование и БД » Товарищи знатоки С++, подсобите.... 

#1  21.10.07 23:14

Товарищи знатоки С++, подсобите....

Немогу вспомнить как пользоваться функцией ROUND в сях, давно ей не пользовался, уже совсем из головы вылетело....

округление надо провести то второго знака после запятой, округляемая величина имеет тип "double"
если можно с коменнтариями плз.

заранее спс.

Offline

#2  21.10.07 23:59

Re: Товарищи знатоки С++, подсобите....

спс, попробую из этого что-нить состряпать...

з.ы буду рад если кто-нить еще откликнется.

Исправлено uropexa (21.10.07 23:59)

Offline

#3  22.10.07 00:47

Re: Товарищи знатоки С++, подсобите....

как вариант

Код: cpp:

#include <stdio.h>
 
// val - округляемое число
// r - до какого знака округлять (R>0. при R==0 просто отбрасывается дробная часть)
double round( double val , int r )
{
	if (r == 0) return (int)val;
 
	char buf[100];
	char format[] = "%.#lf";	
	format[2] = r + '0';	// '#' => 'r'
 
	sprintf( buf, format, val );
	return atof( buf );
}

Offline

#4  22.10.07 12:52

Re: Товарищи знатоки С++, подсобите....

умножаем на 100, прибавляем 0.5 далее юзаем ceil (или floor - не помню, короче _вниз округляем_), делим на 100.
получили 2 знака после запятой, округленные по правилам.

Исправлено Andron_ (22.10.07 12:56)

Offline

#5  23.10.07 01:47

Re: Товарищи знатоки С++, подсобите....

вот такой способ по идее должен прокатывать:
все имеет тип double

val= val*100;        //val- величина которую надо до 2 знака после запятой округлить
r= val%1;             //присваиваем остаток от деления
val= (val/100) - r; //возвращаем величину с обрезаным остатком после второго знака после запятой


но вылазит ошибка:
error C2296: '%' : illegal, left operand has type 'double'

в чем проблема?

Offline

#6  23.10.07 02:05

Re: Товарищи знатоки С++, подсобите....

...ибо r у тебя типа int...

Исправлено Reseller (23.10.07 02:06)

Offline

#7  23.10.07 02:09

Re: Товарищи знатоки С++, подсобите....

del

Исправлено uropexa (23.10.07 02:09)

Offline

#8  23.10.07 15:24

Re: Товарищи знатоки С++, подсобите....

Код::

r= val%1;

операция % целочисленная и неприменима к double

Offline

#9  23.10.07 16:54

Re: Товарищи знатоки С++, подсобите....

Код::

double value;
value *= 100;
value += 0.5;
value = floor(value);
value /= 100;

Offline

Программирование и БД » Товарищи знатоки С++, подсобите.... 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.107 сек.
Выполнено 11 запросов.