Количество знаков после запятой в double
От: Symon Россия  
Дата: 12.09.07 05:55
Оценка:
Как по уму подсчитать количество значемых знаков после запятой в double?
Только ли через sprintf, _ecvt, _fcvt, _gcvt самому подсчитывая?
Re: Количество знаков после запятой в double
От: superman  
Дата: 12.09.07 11:26
Оценка:
Здравствуйте, Symon, Вы писали:

S>Как по уму подсчитать количество значемых знаков после запятой в double?

S>Только ли через sprintf, _ecvt, _fcvt, _gcvt самому подсчитывая?

В зависимости от того зачем это надо
ИМХО в большинстве случаев только введя внешнее ограничение типа "знаки выше Н-ого не значащие"
sprintf в этом деле мало поможет, самому считать тоже безполезно
Re: Количество знаков после запятой в double
От: Erop Россия  
Дата: 12.09.07 12:28
Оценка:
Здравствуйте, Symon, Вы писали:

S>Как по уму подсчитать количество значемых знаков после запятой в double?

S>Только ли через sprintf, _ecvt, _fcvt, _gcvt самому подсчитывая?

Вообще-то в файле limits.h описана константа DBL_EPSILON, кажется.
Это самое маленькое положительное число, которое при приюавлении к 1.0 даёт ответ отличный от 1.0
Это так сказать принципиальное железное ограничение.

Просто обычно, в реальных задачах количество реально значащих цифр меньше того, на которое позволяет надеяться величина этой константы.
Поясни зачем тебе нужно количество знаков после запятой?


Да, кстати, можно ещё и так:
int calcDigCount()
{
    double eps = 1.0;
    double base = 1.0;
    int digCount = 0;
    while( base + eps != base ) {
        eps *= 0.1;   
        assert( eps > 0 );
        digCount++;
    }
    assert( eps > 0 );
    return digCount;
}
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Количество знаков после запятой в double
От: vayerx  
Дата: 12.09.07 17:29
Оценка:
Здравствуйте, Symon, Вы писали:

S>Как по уму подсчитать количество значемых знаков после запятой в double?

S>Только ли через sprintf, _ecvt, _fcvt, _gcvt самому подсчитывая?

frexp() + std::numeric_limits<double>::digits() [ + ldexp() ]
Re: Количество знаков после запятой в double
От: Symon Россия  
Дата: 13.09.07 05:49
Оценка:
Всё! Сам разобрался!
-----------------------

На самом деле, причина не такая уж и извращённая, как могло показаться:
нужно в зависимости от стартового значения выводить последующие с тем же кол-вом знаков после запятой.
Например ряд чисел и соответствующих выводимых значений должен бы выглядеть так:
1.45 — стартовое значение так и выводится "1.45", для дальнейшего вывода будут использоваться 2 знака после запятой:
2.9"2.90"
4.0"4.00"
5.4"5.40"
6.55"6.55"

А вот решение с применением класса MFC — CString
UINT GetDecimalDigitsCount (double dStartValue)
{
    CString strBuffer;
    strBuffer.Format (_T("%f"), dStartValue);
    strBuffer.TrimRight(_T('0'));
    return static_cast<UINT> (strBuffer.GetLength() - strBuffer.Find (_T('.')) - 1);
}
Re: Количество знаков после запятой в double
От: MasterZiv СССР  
Дата: 13.09.07 06:33
Оценка:
Symon пишет:
> Как по уму подсчитать количество значемых знаков после запятой в double?

Нет в double и float количества знаков после запятой. Как понятия нет.
Так что посчитать невозможно.
во-первых, положение запятой определяется форматом вывода.
Во-вторых, количество десятичных знаков неопределено. Их столько,
сколько ты хочешь напечатать.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Количество знаков после запятой в double
От: Symon Россия  
Дата: 13.09.07 06:36
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Symon пишет:

>> Как по уму подсчитать количество значемых знаков после запятой в double?

MZ>Нет в double и float количества знаков после запятой. Как понятия нет.

MZ>Так что посчитать невозможно.
MZ>во-первых, положение запятой определяется форматом вывода.
MZ>Во-вторых, количество десятичных знаков неопределено. Их столько,
MZ>сколько ты хочешь напечатать.

Ты долго думал чтоб ТАКУЮ УМНУЮ МЫСЛЬ напесать???
ЗЫ см. мой же пост в этом топике над твоим
Re[2]: Количество знаков после запятой в double
От: alzt  
Дата: 13.09.07 06:43
Оценка:
Здравствуйте, Symon, Вы писали:

отформатировать чтоли надо было?
Re[3]: Количество знаков после запятой в double
От: Symon Россия  
Дата: 13.09.07 06:49
Оценка:
Здравствуйте, alzt, Вы писали:

A>Здравствуйте, Symon, Вы писали:


A>отформатировать чтоли надо было?


ну да
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.