Как сделать так, чтобы main() возвратила double?
Не путайте вывод команды и код выхода. Испльзуйте печать в stdout, к примеру, а из c# читайте.
"тандартная возможность передачи объекта через буфер между языками" - часто используют для этого очереди. zeromq, к примеру.
может return (double)ваша_переменная. ну а вообще компилятор возвращает только целые значения