Почему бы и нет:
value = (a + b) % 1.0
if (value == 0.0 and a + b > 0) value = 1.0
Я не уверен, почему условие a + b > 0
необходимо во второй строке, но оно соответствует поведению в вашем коде возврата 1, если a + b
- положительное целое число, и 0, если a + b
- ноль или отрицательное целое число По какой конкретной причине вы хотите вернуть 1, когда a + b
является целым числом, а не 0?
РЕДАКТИРОВАТЬ: Глядя на документацию далее, эта первая строка, вероятно, должна быть value = fmod(a + b, 1.0) + (1.0 if a + b < 0.0 else 0.0)
(fmod
рекомендуется для большей точности, с этой второй частью, чтобы исправить знак результата).