Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
别团等shy哥发育
redis
提交
b6b7bc0b
R
redis
项目概览
别团等shy哥发育
/
redis
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b6b7bc0b
编写于
12月 02, 2014
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use exp format and more precision output for ZSCAN.
Ref: issue #2175
上级
6a0b1b5b
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
21 addition
and
15 deletion
+21
-15
src/db.c
src/db.c
+1
-1
src/object.c
src/object.c
+17
-11
src/redis.h
src/redis.h
+1
-1
src/t_hash.c
src/t_hash.c
+1
-1
src/t_string.c
src/t_string.c
+1
-1
未找到文件。
src/db.c
浏览文件 @
b6b7bc0b
...
...
@@ -381,7 +381,7 @@ void scanCallback(void *privdata, const dictEntry *de) {
}
else
if
(
o
->
type
==
REDIS_ZSET
)
{
key
=
dictGetKey
(
de
);
incrRefCount
(
key
);
val
=
createStringObjectFromLongDouble
(
*
(
double
*
)
dictGetVal
(
de
));
val
=
createStringObjectFromLongDouble
(
*
(
double
*
)
dictGetVal
(
de
)
,
0
);
}
else
{
redisPanic
(
"Type not handled in SCAN callback."
);
}
...
...
src/object.c
浏览文件 @
b6b7bc0b
...
...
@@ -109,9 +109,11 @@ robj *createStringObjectFromLongLong(long long value) {
return
o
;
}
/* Note: this function is defined into object.c since here it is where it
* belongs but it is actually designed to be used just for INCRBYFLOAT */
robj
*
createStringObjectFromLongDouble
(
long
double
value
)
{
/* Create a string object from a long double. If humanfriendly is non-zero
* it does not use exponential format and trims trailing zeroes at the end,
* however this result in loss of precision. Otherwise exp format is used
* and the output of snprintf() is not modified. */
robj
*
createStringObjectFromLongDouble
(
long
double
value
,
int
humanfriendly
)
{
char
buf
[
256
];
int
len
;
...
...
@@ -120,15 +122,19 @@ robj *createStringObjectFromLongDouble(long double value) {
* that is "non surprising" for the user (that is, most small decimal
* numbers will be represented in a way that when converted back into
* a string are exactly the same as what the user typed.) */
len
=
snprintf
(
buf
,
sizeof
(
buf
),
"%.17Lf"
,
value
);
/* Now remove trailing zeroes after the '.' */
if
(
strchr
(
buf
,
'.'
)
!=
NULL
)
{
char
*
p
=
buf
+
len
-
1
;
while
(
*
p
==
'0'
)
{
p
--
;
len
--
;
if
(
humanfriendly
)
{
len
=
snprintf
(
buf
,
sizeof
(
buf
),
"%.17Lf"
,
value
);
/* Now remove trailing zeroes after the '.' */
if
(
strchr
(
buf
,
'.'
)
!=
NULL
)
{
char
*
p
=
buf
+
len
-
1
;
while
(
*
p
==
'0'
)
{
p
--
;
len
--
;
}
if
(
*
p
==
'.'
)
len
--
;
}
if
(
*
p
==
'.'
)
len
--
;
}
else
{
len
=
snprintf
(
buf
,
sizeof
(
buf
),
"%.17Lg"
,
value
);
}
return
createStringObject
(
buf
,
len
);
}
...
...
src/redis.h
浏览文件 @
b6b7bc0b
...
...
@@ -1116,7 +1116,7 @@ robj *tryObjectEncoding(robj *o);
robj
*
getDecodedObject
(
robj
*
o
);
size_t
stringObjectLen
(
robj
*
o
);
robj
*
createStringObjectFromLongLong
(
long
long
value
);
robj
*
createStringObjectFromLongDouble
(
long
double
value
);
robj
*
createStringObjectFromLongDouble
(
long
double
value
,
int
humanfriendly
);
robj
*
createListObject
(
void
);
robj
*
createZiplistObject
(
void
);
robj
*
createSetObject
(
void
);
...
...
src/t_hash.c
浏览文件 @
b6b7bc0b
...
...
@@ -565,7 +565,7 @@ void hincrbyfloatCommand(redisClient *c) {
}
value
+=
incr
;
new
=
createStringObjectFromLongDouble
(
value
);
new
=
createStringObjectFromLongDouble
(
value
,
1
);
hashTypeTryObjectEncoding
(
o
,
&
c
->
argv
[
2
],
NULL
);
hashTypeSet
(
o
,
c
->
argv
[
2
],
new
);
addReplyBulk
(
c
,
new
);
...
...
src/t_string.c
浏览文件 @
b6b7bc0b
...
...
@@ -397,7 +397,7 @@ void incrbyfloatCommand(redisClient *c) {
addReplyError
(
c
,
"increment would produce NaN or Infinity"
);
return
;
}
new
=
createStringObjectFromLongDouble
(
value
);
new
=
createStringObjectFromLongDouble
(
value
,
1
);
if
(
o
)
dbOverwrite
(
c
->
db
,
c
->
argv
[
1
],
new
);
else
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录