- large double are not printed/written correctly


I have this simple script :

event bro_init()
local a=-3.019159e-8;
print “a”,a;
local s=fmt("%e",a);
print “s”,s;

results :

a, -0
s, -3.019159e-08

the printing of variable a is important because its -0 once written in a log file.

is there anyway of printing\writing large doubles ?


If you are talking about logging through the logging framework, then that's a different code path for value serialization (I think we try and avoid scientific notation there). Generally just allowing Bro to serialize values how ever it feels like it as you are doing with the bare unformatted print statement can occasionally result in some undesirable behavior.

Are you talking about having this trouble with the logging framework?



Yes, it seems that bro logging and writing large\small numbers is rounded up\down.

I cannot find any workaround besides printing it as a string (which is not a good approach).

Any suggestions ?


When you want to print "double" values with the "print" statement,
you can always choose your preferred format with the "fmt" built-in

However, there is no way (that I'm aware of) to specify a format for
"double" values written to a log file. The current behavior appears to
be broken (because very large or small values cannot be represented in
the logs), so the only workaround would probably be to log as a string.