|
|
1
13
我强烈怀疑没有这样做的原因是BigDecimal和BigInteger的开销没有您想象的那么相关,并且避免它不值得付出努力,并且有可能以某种微妙的方式出错。 举个例子:对于任何金融应用程序来说,节省几十个字节都是没有问题的,而且精度有限,是一个交易破坏者(我的股票价格在美国通常是2-4位数字,但如果你想与新兴市场打交道,你会遇到通货膨胀失控的货币,15位数字的总和会给你买半个面包)。 基本上,这听起来只是另一个过早优化的例子。 |
|
|
2
1
大多数特别关心舍入错误的人使用BigDecimal和BigInteger,它们在大多数情况下都表现得足够好。 但是,在性能更为关键的情况下,使用带舍入的double可以完成工作。新手们常常会忘记这一点,但如果没有明智的选择,你就不能指望得到明智的答案。 在绝大多数情况下,双倍取整是你所需要的。
印刷品
|
|
3
0
如果你看的是一个固定的小数位来处理钱,那么这通常是通过保持整数(如果有必要的话长)的美分数,或者百分之一美分来完成的。
|
|
|
4
0
如果你的焦点是便携式设备,请看 Real . 真的允许 precision 从0到16的数字。它是为MIDP手机设计的。 同样有趣的是,看看 constructive reals 图书馆。不过,它并不轻。 Apache Commons Math Library 和分数一起工作?有没有什么不起作用的原因? |
|
5
-1
在我看来,如果你想要任意精度,那么你需要一个未定义的位数来表示尾数。这意味着尾数需要某种数组分配策略。你可以在这里自己做,但是biginger做的相当有效,而且它可以工作 您需要指定需要表示的最小(非零)值。这将是10^-(2^n),其中n+1是分配给指数的位数。对于BigDecimal,这是10^-(2^31)。你可以使用任意的大小指数,但这个范围应该足够任何人使用。 所以你需要一个无界的整数尾数来给你任意的精度,一个固定大小的指数,这取决于你想要你的最小可表示值是什么。本质上这是BigDecimal;唯一的变化是您将使用一些较小的对象,而不是BigDecimal使用的int。我怀疑节省的空间是否值得。我认为BigDecimal只需要比你自己设计的任何解决方案占用更多的内存就可以满足你的需要。 当然,您可以选择您需要的最大数量的重要图形;然后您需要尾数和指数的固定大小的存储,这是一个更少的存储空间。只要用固定数量的长线作为尾数。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |