Здравствуйте, Symon, Вы писали:
S>Как по уму подсчитать количество значемых знаков после запятой в double? S>Только ли через sprintf, _ecvt, _fcvt, _gcvt самому подсчитывая?
В зависимости от того зачем это надо
ИМХО в большинстве случаев только введя внешнее ограничение типа "знаки выше Н-ого не значащие"
sprintf в этом деле мало поможет, самому считать тоже безполезно
Здравствуйте, 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;
}
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Symon, Вы писали:
S>Как по уму подсчитать количество значемых знаков после запятой в double? S>Только ли через sprintf, _ecvt, _fcvt, _gcvt самому подсчитывая?
На самом деле, причина не такая уж и извращённая, как могло показаться:
нужно в зависимости от стартового значения выводить последующие с тем же кол-вом знаков после запятой.
Например ряд чисел и соответствующих выводимых значений должен бы выглядеть так: 1.45 — стартовое значение так и выводится "1.45", для дальнейшего вывода будут использоваться 2 знака после запятой: 2.9 — "2.90" 4.0 — "4.00" 5.4 — "5.40" 6.55 — "6.55"
Symon пишет: > Как по уму подсчитать количество значемых знаков после запятой в double?
Нет в double и float количества знаков после запятой. Как понятия нет.
Так что посчитать невозможно.
во-первых, положение запятой определяется форматом вывода.
Во-вторых, количество десятичных знаков неопределено. Их столько,
сколько ты хочешь напечатать.
Здравствуйте, MasterZiv, Вы писали:
MZ>Symon пишет: >> Как по уму подсчитать количество значемых знаков после запятой в double?
MZ>Нет в double и float количества знаков после запятой. Как понятия нет. MZ>Так что посчитать невозможно. MZ>во-первых, положение запятой определяется форматом вывода. MZ>Во-вторых, количество десятичных знаков неопределено. Их столько, MZ>сколько ты хочешь напечатать.
Ты долго думал чтоб ТАКУЮ УМНУЮ МЫСЛЬ напесать???
ЗЫ см. мой же пост в этом топике над твоим