Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Unity
提交
30ba118c
T
Third Party Unity
项目概览
OpenHarmony
/
Third Party Unity
10 个月 前同步成功
通知
29
Star
144
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Unity
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
30ba118c
编写于
10月 04, 2016
作者:
J
jsalling
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add printing for large numbers in exponential format
Delete old method for printing
上级
9653fbf7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
30 deletion
+25
-30
src/unity.c
src/unity.c
+25
-30
未找到文件。
src/unity.c
浏览文件 @
30ba118c
...
...
@@ -278,19 +278,10 @@ void UnityPrintFloat(_UD number)
number
=
-
number
;
}
if
(
isinf
(
number
))
UnityPrintLen
(
UnityStrInf
,
3
);
else
/* Small numbers as "%.6f" format string, but uses scientific notation for larger numbers
*/
else
if
(
number
<
4294967296
.
0
f
)
/* Fits in an integer
*/
{
_UD
divisor
=
1
.
0
f
;
_U_UINT
exponent
=
0
;
int
scifmt
;
_U_UINT
i
;
_UU32
integer_part
;
_UD
fraction_part
;
// if (number <= 0xFFFFFFFF) /* Fits in an integer */
{
integer_part
=
(
_UU32
)
number
;
fraction_part
=
number
-
integer_part
;
}
_UU32
integer_part
=
(
_UU32
)
number
;
_UD
fraction_part
=
number
-
integer_part
;
_U_UINT
fraction_bits
=
(
_U_UINT
)(
fraction_part
*
1000000
.
0
f
+
0
.
5
f
);
if
(
fraction_bits
==
1000000
)
...
...
@@ -310,29 +301,33 @@ void UnityPrintFloat(_UD number)
if
(
fraction_bits
==
0
)
break
;
// Truncate trailing 0's
divisor_int
/=
10
;
}
while
(
divisor_int
>
0
);
UNITY_OUTPUT_CHAR
(
' '
);
while
(
number
/
divisor
>=
10
.
0
f
)
{
divisor
*=
10
;
exponent
++
;
}
number
=
number
+
0
.
5
f
/
(
1000000
/
divisor
);
/* Rounding to 6 figures */
/* Print in scientific format: 1.123456e38 */
scifmt
=
exponent
>
3
;
for
(
i
=
0
;
i
<
7
;
i
++
)
/* Always print 7 digits total */
}
else
/* Won't fit in an integer type */
{
_UU32
integer_part
;
_UD
divide
=
10
.
0
f
;
_U_UINT
exponent
=
7
;
while
(
number
/
divide
>=
10000000
.
0
f
)
{
UNITY_OUTPUT_CHAR
(
'0'
+
(
int
)(
number
/
divisor
)
%
10
);
if
((
scifmt
&&
i
==
0
)
||
(
!
scifmt
&&
i
==
exponent
))
UNITY_OUTPUT_CHAR
(
'.'
);
divisor
/=
10
.
0
f
;
divide
*=
10
;
exponent
++
;
}
if
(
scifmt
)
integer_part
=
(
_UU32
)(
number
/
divide
+
0
.
5
f
);
_UU32
divisor_int
=
1000000
;
do
{
UNITY_OUTPUT_CHAR
(
'e'
);
UNITY_OUTPUT_CHAR
(
'+'
);
UnityPrintNumberUnsigned
(
exponent
);
}
UNITY_OUTPUT_CHAR
((
char
)(
'0'
+
(
integer_part
/
divisor_int
)));
integer_part
%=
divisor_int
;
divisor_int
/=
10
;
if
(
divisor_int
==
100000
)
UNITY_OUTPUT_CHAR
(
'.'
);
}
while
(
divisor_int
>
0
);
UNITY_OUTPUT_CHAR
(
'e'
);
UNITY_OUTPUT_CHAR
(
'+'
);
UnityPrintNumberUnsigned
(
exponent
);
}
}
#endif
/* UNITY_FLOAT_VERBOSE */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录