<c:set var="N-15-digits" value=${666,666,666,666,666.6}/>
<c:set var="N-16-digits" value=${6,666,666,666,666,666.6}/>
<fmt:formatNumber value="${N-(0.1-(N%0.1))%0.1}" type="number" minFractionDigits="2"/>
Это решение всегда может отображаться без округления. Если входное значение меньше 16 цифр, сравнение результатов выполняется следующим образом.
N-15-значные цифры показывают
666 666 666 666 666,60
N-16-значные цифры показывают
6 666 666 666 666 667,00