aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2012-06-19 03:35:05 +0000
committerdrh <drh@noemail.net>2012-06-19 03:35:05 +0000
commit4ef941302867706bd6e997b9b46d5e096d93273e (patch)
tree5e849c47c5427e8285d3241ad7f0651050d57204 /src
parent72b3fbc7b5b5bbe783ca6a6b14532770f6eb011d (diff)
downloadsqlite-4ef941302867706bd6e997b9b46d5e096d93273e.tar.gz
sqlite-4ef941302867706bd6e997b9b46d5e096d93273e.zip
Round-trip conversions of real->text->real are now lossless on x64 with GCC.
Untested on other platforms so far. Still a corner-case problem with round(). FossilOrigin-Name: fd7bd4a59361be41b10522abc212cf56fb5e35b4
Diffstat (limited to 'src')
-rw-r--r--src/printf.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/printf.c b/src/printf.c
index 75febb286..9f68d204f 100644
--- a/src/printf.c
+++ b/src/printf.c
@@ -430,6 +430,7 @@ void sqlite3VXPrintf(
}
if( realvalue>0.0 ){
LONGDOUBLE_TYPE scale = 1.0;
+ while( realvalue>=1e100*scale && exp<=350 ){ scale *= 1e100;exp+=100;}
while( realvalue>=1e64*scale && exp<=350 ){ scale *= 1e64; exp+=64; }
while( realvalue>=1e8*scale && exp<=350 ){ scale *= 1e8; exp+=8; }
while( realvalue>=10.0*scale && exp<=350 ){ scale *= 10.0; exp++; }