gpt4 book ai didi

c# - 为什么C#的十进制使用二进制整数有效位?

转载 作者:行者123 更新时间:2023-12-05 08:05:56 24 4
gpt4 key购买 nike

新的 IEEE 128 位十进制浮点类型 https://en.wikipedia.org/wiki/Decimal128_floating-point_format指定有效数(尾数)可以用两种方式之一表示,可以是简单的二进制整数,也可以是密集的十进制(在这种情况下,每十位代表三个十进制数字)。

C# 的 decimal 类型早于该标准,但具有相同的思想。它带有二进制整数有效位。

从表面上看,这似乎效率低下;对于加法和减法,要排列有效数,您必须将其中一个除以十的幂;除法是所有算术运算符中最昂贵的。

选择的原因是什么?什么相应的优势被认为值得该惩罚?

最佳答案

选择一种表示几乎总是要权衡取舍。

来自 here

A binary encoding is inherently less efficient for conversions to orfrom decimal-encoded data, such as strings (ASCII, Unicode, etc.) andBCD. A binary encoding is therefore best chosen only when the data arebinary rather than decimal. IBM has published some unverifiedperformance data.

Here您可以找到有关相对性能的更多信息。

基本上,它断言您的想法,小数有效通常更快,但大多数操作显示相似的性能和二进制甚至在除法中获胜。另请记住,由于英特尔似乎主要依赖二进制有效位(我找不到有关其他制造商的提示),因此他们更有可能获得硬件支持,并且可能会大大超过小数位。

关于c# - 为什么C#的十进制使用二进制整数有效位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62845604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com