2016-01-27 2 views
1

как я могу преобразовать очень маленькие числа в lua? пример 1.75245E-09 или 7.73411E-08 работает на е-04Преобразование очень маленьких чисел

from lua interpreter: 
1> 1.75245E-05 
1.75245e-05 
1> 1.75245E-04 
0.000175245 
+1

Что заставляет вас думать, что не очень-очень-то маленькие цифры, такие как ... E-09 do * not * работают как ожидалось ?! – JimmyB

+0

http://www.lua.org/pil/2.3.html утверждает, что LUA использует точки с плавающей запятой с двойной точностью, которые ["допускают представление чисел с десятичным индексом между 1E-308 и 1E308"] (https://en.wikipedia.org/wiki/Double-precision_floating-point_format). – JimmyB

+1

Посмотрите, как сделать форматированный вывод в LUA. В C у вас есть форматы% f для экспоненциального вывода,% e для научного вывода всегда с показателем и% g для кратчайшей строки среди них. Выход LUA по умолчанию выглядит как% 11.6g. См. Http://www.cplusplus.com/reference/cstdio/printf/ – LutzL

ответ

1

Что вы хотите string.format, который работает почти так же, как функция sprintf печати в струнах C.

Так

string.format("%f",7.73411E-08) 

должно дать желаемый результат. Если полезно, что многие ведущие нули - это еще один вопрос. Я не тестировал это, длина по умолчанию может быть ограничена. Если это так, используйте

string.format("%20f",7.73411E-08) 

для обеспечения достаточного пространства.