Bladeren bron

easier way to change type Number

Roberto Ierusalimschy 25 jaren geleden
bovenliggende
commit
1088cde03c
2 gewijzigde bestanden met toevoegingen van 11 en 4 verwijderingen
  1. 8 1
      llimits.h
  2. 3 3
      lvm.c

+ 8 - 1
llimits.h

@@ -1,5 +1,5 @@
 /*
-** $Id: llimits.h,v 1.14 2000/08/29 14:48:16 roberto Exp roberto $
+** $Id: llimits.h,v 1.15 2000/09/29 12:42:13 roberto Exp roberto $
 ** Limits, basic types, and some other "installation-dependent" definitions
 ** See Copyright Notice in lua.h
 */
@@ -41,6 +41,13 @@
 
 typedef LUA_NUM_TYPE Number;
 
+/* function to convert a Number to a string */
+#define lua_number2str(s,n)	sprintf((s), "%.16g", (n))
+
+/* function to convert a string to a Number */
+#define lua_str2number(s,p)	strtod((s), (p))
+
+
 
 typedef unsigned long lint32;  /* unsigned int with at least 32 bits */
 

+ 3 - 3
lvm.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lvm.c,v 1.138 2000/10/02 14:47:43 roberto Exp roberto $
+** $Id: lvm.c,v 1.139 2000/10/02 20:10:55 roberto Exp roberto $
 ** Lua virtual machine
 ** See Copyright Notice in lua.h
 */
@@ -39,7 +39,7 @@
 
 
 
-int luaV_tonumber (TObject *obj) {  /* LUA_NUMBER */
+int luaV_tonumber (TObject *obj) {
   if (ttype(obj) != TAG_STRING)
     return 1;
   else {
@@ -56,7 +56,7 @@ int luaV_tostring (lua_State *L, TObject *obj) {  /* LUA_NUMBER */
     return 1;
   else {
     char s[32];  /* 16 digits, sign, point and \0  (+ some extra...) */
-    sprintf(s, "%.16g", (double)nvalue(obj));
+    lua_number2str(s, nvalue(obj));  /* convert `s' to number */
     tsvalue(obj) = luaS_new(L, s);
     ttype(obj) = TAG_STRING;
     return 0;