Вы могли бы сделать что-то вроде этого
long fix = (long) value * scale;
за конвертацию в ваш тип и что-то вроде этого
double value = ((double) fix)/((double)scale);
для реконверсии.
Но помните о потере точности и о том, что если вы хотите умножить два числа вашего типа, вам нужно изменить масштаб либо оперантов, либо результата
, например
long fix3 = (fix1 * fix2)/scale;