Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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_Bigdecimal - Fatal编程技术网

如何在Java中创建小数字

如何在Java中创建小数字,java,bigdecimal,Java,Bigdecimal,我正在创建一个小型重力模拟器,我需要它来“更新”每个粒子的位置 为了做到这一点,我试图在方程中实现时间增量 D = 1/2 A_g * T^2 是一个非常小的数字,如.001或更小 在我尝试这样做时,我使用了“float”,因为我的数组的其余部分都是该数据类型,但失败了,所以我需要帮助 在我对这个主题的研究中,我遇到了变量类型“BigDecimal”,但我对如何使用它感到困惑,我不想为我的每个粒子创建一个新的变量(希望它可以与数组中的另一个插槽一起工作) 正确答案最有可能使用float。如果正

我正在创建一个小型重力模拟器,我需要它来“更新”每个粒子的位置

为了做到这一点,我试图在方程中实现时间增量

D = 1/2 A_g * T^2
是一个非常小的数字,如.001或更小

在我尝试这样做时,我使用了“float”,因为我的数组的其余部分都是该数据类型,但失败了,所以我需要帮助

在我对这个主题的研究中,我遇到了变量类型“BigDecimal”,但我对如何使用它感到困惑,我不想为我的每个粒子创建一个新的变量(希望它可以与数组中的另一个插槽一起工作)

正确答案最有可能使用
float
。如果正确使用它,
float
能够表示小到
1.1755e-38
(标准化)的数字

我的猜测是您没有正确地编写
float
文本。文本
0.001
实际上是一个
double
。如果您想要一个
float
文本,您需要使用
f
f
后缀;i、 e.
0.001f

(此猜测与错误消息一致…)



1-将
double
改为
float
也是一个很好的答案。不同之处在于性能和空间使用不太可能显著,而
double
的额外精度可能是有益的。另一方面,n体相互作用的动力学是不稳定的。除非您在编写代码之前真正深入研究数值求解DE的数学(数值分析),否则您可能会发现限制建模逼真度的不是浮点精度…

使用
float
是如何失败的?是的,如果将数组声明为该类型或其超类型,则可以在Java中的数组中使用对象,例如
BigDecimal
。正如@TedHopp所说,
float
是如何失败的?0.001还不够小,无法“太小”使用
float
s,因此可能是您做了其他错误。它表示错误“不兼容类型可能从double转换为float”只需使用
double
…非常感谢,它现在可以工作了。lol对不起,作为java程序员,我非常缺乏经验。@Pi_Co如果这个答案解决了您的问题,那么请将其作为已接受的答案进行检查