繁体   English   中英

计算器浮点转换

[英]Calculator float conversion

好吧,我正在调试我的第一个android应用程序,并且我的程序有问题...我的计算器仅求和,减去,乘和除...而最后一个操作是我的问题...我正在使用TextEdit在其上插入任何值例如,当我用手机除以5时,答案是浮点数,则应用程序将崩溃。 只有在我使用5.0和3.0的情况下,

是否有将int转换为浮点数并且总是回答浮点数的问题?

到目前为止,这是我每次操作所需要的...

try {
                firstNum = new BigDecimal(firstInput.getText().toString());
                firstFloat = firstNum.floatValue();
            } catch (NumberFormatException e) {
                firstNum = null;
            }

            try {
                secondNum = new BigDecimal(secondInput.getText().toString());
                secondFloat = secondNum.floatValue();
            } catch (NumberFormatException e) {
                secondNum = null;
            }

“ firstFloat = firstNum.floatValue();” 和“ secondFloat = firstNum.floatValue();” 我在论坛上看到了一种转换的方式...一切都很好,直到...

if (firstNum == null || secondNum == null) {
                Toast.makeText(getApplicationContext(), "Insira Valores!",
                        Toast.LENGTH_SHORT).show();
            } else {
                result.setText(firstNum.add(secondNum).toString());
            }
        }
    });

输入“ else”后,除非我使用.0 ...,否则它将不会将我的输入加为浮点数。不管怎样,是否可以使用“ firstFloat”和“ secondFloat”进行所有操作?

师:

div.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            try {
                firstNum = new BigDecimal(firstInput.getText().toString());
            } catch (NumberFormatException e) {
                firstNum = null;
            }

            try {
                secondNum = new BigDecimal(secondInput.getText().toString());
            } catch (NumberFormatException e) {
                secondNum = null;
            }

            if (firstNum == null || secondNum == null) {
                Toast.makeText(getApplicationContext(), "Insira Valores!",
                        Toast.LENGTH_SHORT).show();
            } else {
                BigDecimal div = firstNum.divide(secondNum).setScale(2,
                        BigDecimal.ROUND_HALF_EVEN);
                result.setText(div.toString());

            }
        }
    });

首先:每当您的应用程序“崩溃”(由于异常而退出)并且您想要在Stack中寻求帮助时,请在发布前执行以下操作:

首先,在“调试”模式下运行它,然后在“调试”窗口中查看堆栈跟踪。 如果看不到,请在Eclipse中转到Window \\ ShowView \\ Debug。 在许多情况下,它将包括以下内容:

Thread [<1> main] (Suspended (exception RuntimeException))
....
YourClass.yourMethod() line: 27
...

在这种情况下,您可以在第27行看到RuntimeException-这将帮助您解决问题。 如果仍然需要帮助并且需要发布问题,请包括堆栈跟踪,并指出哪一行是第27行。

如果堆栈跟踪未在您的代码中显示失败(换句话说,如果堆栈跟踪中的所有内容都是Android类,而它们都不是您的类),请使用断点来确定程序在哪里失败。 查看Eclipse帮助以获取有关设置断点的更多信息。 您还可以使用它们来找出程序逻辑的问题,因为当您处于Debug(调试)模式下并且遇到断点时,您可以将鼠标悬停在变量上并查看其值。

关于您的问题。 这对我来说很好:

BigDecimal firstNum = null, secondNum = null;
float firstFloat = -1, secondFloat = -1;

try {
    firstNum = new BigDecimal("4");
    firstFloat = firstNum.floatValue();
    secondNum = new BigDecimal("3");
    secondFloat = secondNum.floatValue();
} catch (NumberFormatException e) {
    e.printStackTrace();
}
float a = firstFloat / secondFloat;
tempview.setText(a + "");

您没有发布要进行划分的部分,所以我不确定为什么您的部分不起作用。 但是,我建议您应该自己继续插入它,而不是仅仅发布相关部分。 在程序的不同位置设置一些断点,然后对其进行调试,然后逐步执行代码,在检查问题出处的同时检查不同变量的值。 学习调试过程对您来说比对这个问题的答案更有帮助! 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM