Это работает для меня:
"2.0/3"
и результат 0.6666666666666666
.
Имеет ли это смысл?
Точка getValue(Double.class)
здесь исключена, поскольку ваш 2/3
- это просто операция между двумя целыми числами, а результатом также является целое число - 0
.
И только после этого этот результат конвертируется в ожидаемый дубль как 0.0
.
Вы должны явно указать в выражении, что вы собираетесь иметь дело с двойными числами.
Вы можете рассматривать это как ограничение, но getValue(Double.class)
- это не приведение операции, как в Java. Это пост-конверсия. Поэтому точность просто теряется, потому что ваше выражение в любом случае оценивается как целое число.