diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-01-13 17:09:04 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-01-13 17:09:04 -0200 |
| commit | fb663f768d6d19bdbf6c2ef800657a027a126c24 (patch) | |
| tree | 2c9d9cfb1cb685e76f94665a6022eab3932f1218 | |
| parent | e03767b3eb45059ef9a367161154bec407d78f35 (diff) | |
| download | lua-fb663f768d6d19bdbf6c2ef800657a027a126c24.tar.gz lua-fb663f768d6d19bdbf6c2ef800657a027a126c24.tar.bz2 lua-fb663f768d6d19bdbf6c2ef800657a027a126c24.zip | |
"%.16g" already formats integers as integers, so we do not need an
alternative "%ld" convertion in "tostring".
| -rw-r--r-- | lvm.c | 17 |
1 files changed, 5 insertions, 12 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lvm.c,v 1.36 1998/12/30 17:26:49 roberto Exp roberto $ | 2 | ** $Id: lvm.c,v 1.37 1999/01/12 18:38:35 roberto Exp roberto $ |
| 3 | ** Lua virtual machine | 3 | ** Lua virtual machine |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -51,8 +51,7 @@ static TaggedString *strconc (TaggedString *l, TaggedString *r) { | |||
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | 53 | ||
| 54 | int luaV_tonumber (TObject *obj) { | 54 | int luaV_tonumber (TObject *obj) { /* LUA_NUMBER */ |
| 55 | /* LUA_NUMBER */ | ||
| 56 | if (ttype(obj) != LUA_T_STRING) | 55 | if (ttype(obj) != LUA_T_STRING) |
| 57 | return 1; | 56 | return 1; |
| 58 | else { | 57 | else { |
| @@ -74,18 +73,12 @@ int luaV_tonumber (TObject *obj) { | |||
| 74 | } | 73 | } |
| 75 | 74 | ||
| 76 | 75 | ||
| 77 | int luaV_tostring (TObject *obj) { | 76 | int luaV_tostring (TObject *obj) { /* LUA_NUMBER */ |
| 78 | /* LUA_NUMBER */ | ||
| 79 | if (ttype(obj) != LUA_T_NUMBER) | 77 | if (ttype(obj) != LUA_T_NUMBER) |
| 80 | return 1; | 78 | return 1; |
| 81 | else { | 79 | else { |
| 82 | char s[60]; | 80 | char s[32]; /* 16 digits, signal, point and \0 (+ some extra...) */ |
| 83 | real f = nvalue(obj); | 81 | sprintf(s, "%.16g", (double)nvalue(obj)); |
| 84 | long i; | ||
| 85 | if ((real)LONG_MIN <= f && f <= (real)LONG_MAX && (real)(i=(long)f) == f) | ||
| 86 | sprintf(s, "%ld", i); | ||
| 87 | else | ||
| 88 | sprintf(s, "%.15g", (double)nvalue(obj)); | ||
| 89 | tsvalue(obj) = luaS_new(s); | 82 | tsvalue(obj) = luaS_new(s); |
| 90 | ttype(obj) = LUA_T_STRING; | 83 | ttype(obj) = LUA_T_STRING; |
| 91 | return 0; | 84 | return 0; |
