【发布时间】:2014-05-20 01:04:51
【问题描述】:
我正在尝试将线程上下文中的原始二进制数据转换为人类可读的格式,但在尝试将 quadruple-precision floating point 值转换为 C# 中的可读格式时出现空。
最终,我想以标准科学计数法显示它,例如1.234567×1089。我不担心过程中的精度损失 - 我只是想合理地了解价值是什么。
我的第一个想法是通过提高指数手动将值计算为双精度值,但当然在许多情况下我会超过最大值。我不介意失去精度,但根本无法显示它是不可接受的。
我可以使用某种简单的数学技巧吗?
【问题讨论】:
-
您是否允许四精度计算以转换为十进制,或者您是否必须使用整数和双精度数来做所有事情?是否有四精度函数
pow可用? -
多少精度损失是可以接受的?如果您愿意接受大约 10**-12 的相对误差,那么您可以使用其指数和尾数的前 53 位计算该值的对数(例如以 10 为底),然后检索小数分别来自该日志的积分部分和小数部分的指数和有效数。
-
@MarkDickinson 我理解了单个单词,但我失去了整体含义。愿意发布一个更“ELI5”的答案吗?
-
@MarkDickinson 在精度方面,我不太介意。我只是为了在调试某些东西时做出合理的猜测而显示它。原始的十六进制也会显示出来——我只想要一个“人类可读”的形式来让事情更清楚。
-
@Polynomial:我已经尝试过回答;我希望你不介意 Python - 我知道一点 C#,但我需要更长的时间才能用 C# 给出答案,而且我应该很快就会赶飞机!
标签: c# math floating-point ieee-754