1. Если С++ программка написана более менее разумно, то должно быть возможно превратить её в dll.
И тогда спокойно возвращать double.
2. Костыль через арифметику с фиксированной запятой, где точность представления определена априори (или через ключи). И вместо x возвращать static_cast(x*precisionMultiplier).