persistable sclass PercentIncrease { settable double percentIncrease; *(double *percentIncrease) {} double get() { ret percentIncrease; } double asFactor() { ret 1+percentIncrease/100; } static PercentIncrease fromFactor(double factor) { ret new PercentIncrease((factor-1)*100); } toString { ret plusMinusFix(formatDouble_significant(percentIncrease, 4)) + "%"; } PercentIncrease combineWith aka mul(PercentIncrease i) { ret PercentIncrease.fromFactor(asFactor()*i.asFactor()); } double applyTo aka mul(double x) { ret asFactor()*x; } }