Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 函数将非常小或非常大的数字相乘_Java_Android - Fatal编程技术网

Java 函数将非常小或非常大的数字相乘

Java 函数将非常小或非常大的数字相乘,java,android,Java,Android,我怎样才能乘以*10^(-20)。我找不到任何对数函数,因此我希望会有其他一些您可以使用可以存储大值的类进行计算。Java双精度覆盖范围为4.9*10^-324到1.7*10^308,正或负。如果您的数字在该范围内,并且您乐于使用浮点精度,则可以使用普通的*运算符 Math.log方法的文档是。我不会使用log函数,我会使用Math.pow double d = a * Math.pow(10, -20); Java双精度覆盖范围为4.9*10^-324到1.7*10^-308,正数或负数。

我怎样才能乘以*10^(-20)。我找不到任何对数函数,因此我希望会有其他一些

您可以使用可以存储大值的类进行计算。

Java
双精度
覆盖范围为4.9*10^-324到1.7*10^308,正或负。如果您的数字在该范围内,并且您乐于使用浮点精度,则可以使用普通的
*
运算符


Math.log
方法的文档是。

我不会使用log函数,我会使用Math.pow

 double d = a * Math.pow(10, -20);

Java
双精度
覆盖范围为4.9*10^-324到1.7*10^-308,正数或负数。够了吗?如果是这样的话,你可以使用普通的
*
操作符。数学实用类有很多对数方法,但我支持道格拉斯的评论,如果这是一个答案,我会投票给它。你的意思是将a乘以1e-20?这就是你要找的:?为什么这个答案是负1?在OP中,他在哪里提到了浮点值?这个问题最近修改过吗?即使他使用的是浮点数,对非常小的数字进行计算并使用浮点数也会导致很多问题,您可以通过使用BigDecimal之类的类来避免这些问题。这就是问题所在,为了保持精度并避免浮点运算出现的问题。@JimLewis-在使用浮点/双精度进行计算时,使用BigDecimal没有任何预防措施-相反,它更安全,并减少了使用浮点和双精度类型的陷阱。看看or@inistel:我被你原始答案中链接中的第一句话误导了,它说“这个类代表任意长度的不可变整数。”但我现在看到它也能代表非整数。我仍然认为这不是OP应该研究的解决方案,但我很乐意取消否决票。Java支持浮点文本,因此您可以编写:
a*1.0e-20