Folks,

last changes to number formatting in luatex makes things somewhat confusing. Please consider the following.

  \directlua{

  local floor = math.floor
  local round = function(n) return floor(10000*n+0.5)/10000 end

  n = math.pi
        
  % generic round doesn't work anymore,
  print()
  io.write(round(n))

  % but explicit conversion to string helps
  print()
  io.write(round(n).."")

  % now lets take more pleasant n
  n = 100.4
  % now the explicit conversion to string doesn't help either
  print()
  print(round(n))
  % same with pdf.print, tex.write
  pdf.print(round(n))
  tex.write(round(n))

  }?\end

This is hardly controlable, as the same operations gives completelly different results for n=10.4 and n=100.4. Obviously much depends on internal representation of the number, but one never had to bother before.

The reason I'm concerned is that string.format() function allows only fixed decimal digits "%.<n>f" or fixed all the digits "%.<n>g". And what is actually needed in most cases is "round to <n> digits and omit extra zeros at the end". That is why I tend to use floor(scale*n+0.5)/scale for rounding, which is not a good solution any longer.

Can one advice how to write rounded numbers without extra zeros?

Thanks, Paweł
--
Pawe/l Jackowski
[email protected]
_______________________________________________
dev-luatex mailing list
[email protected]
http://www.ntg.nl/mailman/listinfo/dev-luatex

Reply via email to