四舍五入的数字具有数量惊人的细节。这可能看起来微不足道,但与大多数事情一样,需要考虑的因素比显而易见的要多得多。我预计 IEEE 期刊中有数百甚至数千页专门讨论舍入问题。
舍入的复杂性的一个例子是威廉·卡汉(William Kahan)所说的“制表师的困境” :一般情况下,没有办法提前知道需要多准确地计算一个数字才能正确舍入它。
在任何数字系统中,四舍五入都可能很微妙,但有一种替代数字系统,它比以 10 为基数的舍入要简单一些。它是以 3 为基数,但有所不同。我们不使用 0、1 和 2 作为“数字”,而是使用 -1、0 和 1。这被称为平衡三元系统:三元是因为基数为 3,平衡是因为数字关于 0 对称。
我们需要一个−1 的符号。一个常见且方便的选择是使用 T。想象一下将减号从 1 前面移到它的上面。现在我们可以将一天中的小时数表示为 10T0 因为
描述数字x的平衡三元表示的更正式方法是一组系数t k ,使得
限制是每个t k都在集合 {−1, 0, 1} 中。
平衡三元表示有许多有趣的特性。例如,正数和负数都可以不带负号来表示。例如,请参阅 Brain Hayes 的优秀文章《三垒》 。我们在这里感兴趣的属性是,要将平衡三进制数舍入到最接近的整数,只需去掉小数部分即可。舍入与截断相同。要看到这一点,请注意最大可能的小数部分是全 1 的序列,它代表 ½:
类似地,最负可能的小数部分是所有 T 的序列,它表示 -1/2。因此,除非小数部分恰好等于 1/2,否则截断小数部分会四舍五入到最接近的整数。如果小数部分恰好是1/2,则不存在最接近的整数,而是两个同样接近的整数。
相关帖子
《A magic land where rounding equals truncation》一文首次出现在John D. Cook上。
原文: https://www.johndcook.com/blog/2025/01/23/balanced-ternary-rounding/