Я пытаюсь реализовать простой алгоритм прореживания в C ++.У меня есть два массива, скажем p
& q
, где индексы связаны друг с другом следующим соотношением:
p[k] = q[0.5*k]
.Это означает, что следующая последовательность должна считаться действительной:
p[0] = q[0]
p[1] = 0
p[2] = q[1]
p[3] = 0
p[4] = q[2]
и т. Д. *
Обратите внимание, что p[k]
принимает значение только и только тогда, когда результат (0.5*k)
не содержит десятичных знаков (или имеет 0 в десятичном виде) и не использует никаких округлений и т. д.
Мой вопрос: Есть ли способ отличить целое число (число сбез десятичных разрядов или только 0 в десятичном, скажем 2.0) и число с десятичными разрядами в C ++, при условии, что оба приводятся к удвоению?
например.) 2.0 - это целочисленное приведение к удвоению.2.1 - число с десятичными разрядами.
например.2) * 0,9 * 2 должно поместить 0 в массив p, в то время как 0,9 * 10 должно положить q [9] в массив p. *
Если я использую оператор (int) (0.5*k)
, то получаю целое числов любом случае, независимо от значения k.
Редактировать: Значение 0,5 в приведенном выше случае является только иллюстративным.Это может быть любое число, например 2, 2,5, 0,9, 0,95 и т. Д.)
Любая помощь приветствуется,
Спасибо,
Шрирам.