这可能以前可能被问过,但我找不到任何相关的东西。
通过任意/固定数量的整数的专用类或结构来实现一种任意/十进制算术是否有可能/性能?
让我澄清一下;浮动(据我了解),使用尾数,指数,也许还有一个符号位。它们能够表示 1/2、1/4、1/8 等……但不能表示 1/10。
我的建议是这样的:让数字由一个普通的int
或int64_t
一系列的数字表示,只保留不超过 10 次方的值,完全被整数范围覆盖(所以对于 32 位 int,限制为 10^8-1)。这只是为了保持计算容易。再加上一个指数,这将说明它应该乘以十的幂才能得到实数。
例如:125.36 将表示为int
等于 12536 和十的幂等于 -2。这个数字实际上会占用太多int
s 和一堆特殊功能。
另一个例子:4,294,967,297(即 2^32+1)需要两个int
s,一个等于 4,另一个等于 294,967,297,十的幂等于 0。
这是一个好主意,为了更简单/更快的算术而丢弃所有这些内存吗?我还没有完全考虑过溢出部分,也许计算int32_t+int32_t=int64_t
会很好地解决这个问题?