Hello, I start with Lua and I try to display my result with 4 decimal places without success. Thank you Fabrice
\startluacode function Binomial(n,k,p) if k > n then return nil end if k > n/2 then k = n - k end
numer, denom = 1, 1 for i = 1, k do numer = numer * ( n - i + 1 ) denom = denom * i end return (numer/denom) * p^k * (1-p)^(n-k) end
\stopluacode
\starttext \ctxlua{print(string.format("%g",Binomial(100,60,0.25)))} \stoptext
Hi Fabrice,
string.format behaves more or less as C printf. You probably need to specify %.4g in 1st argument. Hope this helps
Best Joseph
De : Fabrice Couvreur Envoyé le :dimanche 14 janvier 2018 13:05 À : mailing list for ConTeXt users Objet :[NTG-context] Problem with string.format (Lua)
Hello, I start with Lua and I try to display my result with 4 decimal places without success. Thank you Fabrice
\startluacode function Binomial(n,k,p) if k > n then return nil end if k > n/2 then k = n - k end numer, denom = 1, 1 for i = 1, k do numer = numer * ( n - i + 1 ) denom = denom * i end return (numer/denom) * p^k * (1-p)^(n-k) end
\stopluacode
\starttext \ctxlua{print(string.format("%g",Binomial(100,60,0.25)))} \stoptext
On 1/14/2018 1:13 PM, Joseph Canedo wrote:
Hi Fabrice,
string.format behaves more or less as C printf. You probably need to specify %.4g in 1st argument.
Hope this helps
Best
Joseph
*De : *Fabrice Couvreur mailto:fabrice1.couvreur@gmail.com *Envoyé le :*dimanche 14 janvier 2018 13:05 *À : *mailing list for ConTeXt users mailto:ntg-context@ntg.nl *Objet :*[NTG-context] Problem with string.format (Lua)
Hello, I start with Lua and I try to display my result with 4 decimal places without success. Thank you Fabrice
\startluacode function Binomial(n,k,p) if k > n then return nil end if k > n/2 then k = n - k end
numer, denom = 1, 1 for i = 1, k do numer = numer * ( n - i + 1 ) denom = denom * i end return (numer/denom) * p^k * (1-p)^(n-k) end
\stopluacode
\starttext \ctxlua{print(string.format("%g",Binomial(100,60,0.25)))} \stoptext
the % should be \letterpercent
btw, use locals for numer and denom
you can also do this:
\startluacode function document.Binomial(n,k,p) if k > n then return nil end if k > n/2 then k = n - k end local numer, denom = 1, 1 for i=1,k do numer = numer * ( n - i + 1 ) denom = denom * i end context("%0.5g",(numer/denom) * p^k * (1-p)^(n-k)) end \stopluacode
\starttext \ctxlua{document.Binomial(100,60,0.25)} \stoptext
in general
context("format",....)
is a bit more powerful than using format
Hi Hans, Your code runs perfectly, thanks. However, if I replace % with \letterpercent, my code does not run
\ctxlua{print(string.format("\letterpercent g",Binomial(100,60,0.25)))}
Thank you Fabrice
2018-01-14 13:58 GMT+01:00 Hans Hagen pragma@wxs.nl:
On 1/14/2018 1:13 PM, Joseph Canedo wrote:
Hi Fabrice,
string.format behaves more or less as C printf. You probably need to specify %.4g in 1st argument.
Hope this helps
Best
Joseph
*De : *Fabrice Couvreur mailto:fabrice1.couvreur@gmail.com *Envoyé le :*dimanche 14 janvier 2018 13:05 *À : *mailing list for ConTeXt users mailto:ntg-context@ntg.nl *Objet :*[NTG-context] Problem with string.format (Lua)
Hello, I start with Lua and I try to display my result with 4 decimal places without success. Thank you Fabrice
\startluacode function Binomial(n,k,p) if k > n then return nil end if k > n/2 then k = n - k end
numer, denom = 1, 1 for i = 1, k do numer = numer * ( n - i + 1 ) denom = denom * i end return (numer/denom) * p^k * (1-p)^(n-k)
end
\stopluacode
\starttext \ctxlua{print(string.format("%g",Binomial(100,60,0.25)))} \stoptext
the % should be \letterpercent
btw, use locals for numer and denom
you can also do this:
\startluacode function document.Binomial(n,k,p) if k > n then return nil end if k > n/2 then k = n - k end local numer, denom = 1, 1 for i=1,k do numer = numer * ( n - i + 1 ) denom = denom * i end context("%0.5g",(numer/denom) * p^k * (1-p)^(n-k)) end \stopluacode
\starttext \ctxlua{document.Binomial(100,60,0.25)} \stoptext
in general
context("format",....)
is a bit more powerful than using format
--
Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/list info/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ____________________________________________________________ _______________________
On 1/14/2018 9:50 PM, Fabrice Couvreur wrote:
Hi Hans, Your code runs perfectly, thanks. However, if I replace % with \letterpercent, my code does not run
\ctxlua{print(string.format("\letterpercent g",Binomial(100,60,0.25)))}
because print prints to the console
Thank you Fabrice
2018-01-14 13:58 GMT+01:00 Hans Hagen <pragma@wxs.nl mailto:pragma@wxs.nl>:
On 1/14/2018 1:13 PM, Joseph Canedo wrote: Hi Fabrice, string.format behaves more or less as C printf. You probably need to specify %.4g in 1st argument. Hope this helps Best Joseph *De : *Fabrice Couvreur <mailto:fabrice1.couvreur@gmail.com <mailto:fabrice1.couvreur@gmail.com>> *Envoyé le :*dimanche 14 janvier 2018 13:05 *À : *mailing list for ConTeXt users <mailto:ntg-context@ntg.nl <mailto:ntg-context@ntg.nl>> *Objet :*[NTG-context] Problem with string.format (Lua) Hello, I start with Lua and I try to display my result with 4 decimal places without success. Thank you Fabrice \startluacode function Binomial(n,k,p) if k > n then return nil end if k > n/2 then k = n - k end numer, denom = 1, 1 for i = 1, k do numer = numer * ( n - i + 1 ) denom = denom * i end return (numer/denom) * p^k * (1-p)^(n-k) end \stopluacode \starttext \ctxlua{print(string.format("%g",Binomial(100,60,0.25)))} \stoptext the % should be \letterpercent btw, use locals for numer and denom you can also do this: \startluacode function document.Binomial(n,k,p) if k > n then return nil end if k > n/2 then k = n - k end local numer, denom = 1, 1 for i=1,k do numer = numer * ( n - i + 1 ) denom = denom * i end context("%0.5g",(numer/denom) * p^k * (1-p)^(n-k)) end \stopluacode \starttext \ctxlua{document.Binomial(100,60,0.25)} \stoptext in general context("format",....) is a bit more powerful than using format -- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl <http://www.pragma-ade.nl> | www.pragma-pod.nl <http://www.pragma-pod.nl> ----------------------------------------------------------------- ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl <mailto:ntg-context@ntg.nl> / http://www.ntg.nl/mailman/listinfo/ntg-context <http://www.ntg.nl/mailman/listinfo/ntg-context> webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ <https://bitbucket.org/phg/context-mirror/commits/> wiki : http://contextgarden.net ___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________