Decimal multiplication

I’m a bit confused what’s going wrong here, the code looks right to me, but somehow benefit = 9.43 * 960 instead of the expected 9.43 * 0.96.

numerical-types
	'eurocent'
		= 'fraction' * 'eurocent'
		@numerical-type: (
			label: "Euro"
			decimals: 2
		)
	'fraction'
		// = 'fraction' * 1 * 1  ^ 1
		= 'percent'  * 1 * 10 ^ -2
		@numerical-type: (
			label: "1/%"
			decimals: 3
		)
	'percent'
		= 'fraction' * 1 * 10 ^  2
		@numerical-type: (
			label: "%"
			decimals: 1
		)


The @numerical-type: annotation influences only what you see in the web app/GUI. It does not affect how values are stored, so it is important to ignore them unless you are focusing on the GUI.

The name of the numerical type should correspond to the precision that you require.
From your model I can see that you want to store a childcarePercentage with 1 decimal place. Therefore, you need a numerical type such as promille which represents a percentage with 1 decimal place.

The numerical type fraction is only useful for computations.
You cannot actually store a fraction as an Alan number; only intermediate results can have decimal places.

Example code for getting the expected result for benefit:

...
	'childcarePercentage': number 'promille' = 96 // 9.6 % in the GUI
	'HoldingTarif': number 'eurocent' = 9430      // 94.30 Euro in the GUI
...
	'benefit': number 'eurocent' = product ( // 9.05 Euro in the GUI
		from 'promille' .'childcarePercentage' as 'fraction' ,
		.'HoldingTarif'
	)
...

numerical-types
	'eurocent'
		= 'fraction' * 'eurocent'
		@numerical-type: (
			label: "Euro"
			decimals: 2
		)
	'fraction'
		= 'promille' * 1 * 10 ^ -3
	'promille'
		@numerical-type: (
			label: "%"
			decimals: 1
		)