Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.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_Firebase - Fatal编程技术网

Java 有没有更好的方法处理双倍的数学计算?

Java 有没有更好的方法处理双倍的数学计算?,java,android,firebase,Java,Android,Firebase,我正在构建一个简单的库存和销售应用程序,因此我在android中编写了一个利润计算方法,将所有产品的利润作为总利润显示在应用程序的文本视图中。值是双倍的,所以我在下面写了这个方法来获得总利润,但输出有点奇怪,它显示的是“2.45116E7”或“1.22558E7”之类的东西,因为每次我运行应用程序时它都会改变,但与总利润的格式相同。因此,我添加了Log.d来跟踪方法内部的输出,我意识到该方法确实从每个产品中获取利润值,并将它们相加为总利润,但一旦总利润达到10000000或以上,它就会更改为该输

我正在构建一个简单的库存和销售应用程序,因此我在android中编写了一个利润计算方法,将所有产品的利润作为总利润显示在应用程序的文本视图中。值是双倍的,所以我在下面写了这个方法来获得总利润,但输出有点奇怪,它显示的是“2.45116E7”或“1.22558E7”之类的东西,因为每次我运行应用程序时它都会改变,但与总利润的格式相同。因此,我添加了Log.d来跟踪方法内部的输出,我意识到该方法确实从每个产品中获取利润值,并将它们相加为总利润,但一旦总利润达到10000000或以上,它就会更改为该输出。请我需要帮助,以了解什么是错误的和可能的解决方案。请参见下面的方法以及Log.d输出的屏幕截图

private double getStoreProfits() {
    for (Product product : products) {
        Log.d("Profit", String.valueOf(product.getProfit()));
        totalProfit += product.getProfit();
        Log.d("Total Profits", String.valueOf(totalProfit));
    }
    return totalProfit;
}
输出:


您可以将
字符串.valueOf(var)
替换为
字符串.format(“%.2f”,var)

这将给出小数点前的所有数字,然后是小数点后的两位数



当然,正如Jon所说,在这种情况下使用BigDecimal会更好一些。您可以将其转换为float或double,并使用我已经介绍过的方法(使用
floatValue()
doubleValue()
),也可以使用
toPlainString()
方法。

对于货币操作,我建议首先使用
bigdecimic
而不是
double
。(或者使用BigInteger计算整数中的所有内容。)你知道
E
是数学中的一种特殊符号吗?这是你问题的一部分吗?@JonSkeet谢谢,我试图使用BigDecimal,但Firebase(我存储数据的地方)抛出了一个例外,它不支持BigDecimals,因为它是一个商业应用程序,我想使用Double或BidDecimals,但因为Firebase不支持任何其他选项?如果你使用,你可以指定宽度。@a_local_我不知道,但我就是不能在这种情况下解释它,你能帮我吗?我的问题是如何让我计算的实际数字显示出来而不是那个表达式?非常感谢!这就解决了!请你给我指一下这个和其他相关概念下的参考资料好吗?对于有这个问题的人来说,这个问题有更多的细节