Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Unity
提交
6ec7c78b
T
Third Party Unity
项目概览
OpenHarmony
/
Third Party Unity
1 年多 前同步成功
通知
36
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看板
提交
6ec7c78b
编写于
9月 04, 2016
作者:
J
jsalling
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Writing a float printing routine
上级
661c1b2d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
3 deletion
+53
-3
src/unity.c
src/unity.c
+53
-3
未找到文件。
src/unity.c
浏览文件 @
6ec7c78b
...
...
@@ -263,9 +263,59 @@ void UnityPrintMask(const _U_UINT mask, const _U_UINT number)
void
UnityPrintFloat
(
_UD
number
)
{
char
TempBuffer
[
UNITY_VERBOSE_NUMBER_MAX_LENGTH
+
1
];
snprintf
(
TempBuffer
,
sizeof
(
TempBuffer
),
"%.6f"
,
number
);
UnityPrint
(
TempBuffer
);
// char TempBuffer[UNITY_VERBOSE_NUMBER_MAX_LENGTH + 1];
// snprintf(TempBuffer, sizeof(TempBuffer), "%.6f", number);
// UnityPrint(TempBuffer);
if
(
isnan
(
number
))
{
UnityPrint
(
UnityStrNaN
);
return
;
}
if
(
number
<
0
)
{
UNITY_OUTPUT_CHAR
(
'-'
);
number
=
-
number
;
}
if
(
isinf
(
number
))
UnityPrintLen
(
UnityStrInf
,
3
);
else
{
_UD
divisor
=
1
;
_U_UINT
exponent
=
0
;
while
(
number
/
divisor
>=
10
.
0
f
)
{
divisor
*=
10
;
exponent
++
;
}
/* 10000000 < 2^24, max integer cast to a float without truncation */
#define FLOAT_SCI_FORMAT_MINIMUM 10000000
if
(
number
>=
FLOAT_SCI_FORMAT_MINIMUM
)
{
/* Print in scientific format: 1.123456e38 */
int
i
;
for
(
i
=
0
;
i
<
7
;
i
++
)
{
UNITY_OUTPUT_CHAR
(
'0'
+
(
int
)(
number
/
divisor
)
%
10
);
if
(
i
==
0
)
UNITY_OUTPUT_CHAR
(
'.'
);
divisor
/=
10
.
0
f
;
}
UNITY_OUTPUT_CHAR
(
'e'
);
UnityPrintNumberUnsigned
(
exponent
);
}
else
{
/* Print up to 9 characters, 6 after the decimal max */
_UD
decimals
=
FLOAT_SCI_FORMAT_MINIMUM
/
divisor
;
if
(
decimals
>
1000000
)
decimals
=
1000000
;
number
=
number
+
0
.
5
f
/
decimals
;
/* Rounding */
while
(
decimals
>=
1
)
{
UNITY_OUTPUT_CHAR
(
'0'
+
(
int
)(
number
/
divisor
)
%
10
);
if
(
divisor
==
1
.
0
f
)
UNITY_OUTPUT_CHAR
(
'.'
);
if
(
divisor
<=
1
.
0
f
)
decimals
/=
10
;
divisor
/=
10
;
}
}
}
}
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录