infinity double操作产生infinity java/android studio
我试着做除法(双精度/双精度),结果是无穷大。有人能帮我解释一下为什么会这样吗 我搜索了一些论坛,但没有找到答案 我有这样的想法:infinity double操作产生infinity java/android studio,java,android,android-studio,double,Java,Android,Android Studio,Double,我试着做除法(双精度/双精度),结果是无穷大。有人能帮我解释一下为什么会这样吗 我搜索了一些论坛,但没有找到答案 我有这样的想法: public class CalculoSapIsolada extends AppCompatActivity { double areaAcoX; double numeroBarrasX; double areaBarraX; @Override protected void onCreate(Bundle saved
public class CalculoSapIsolada extends AppCompatActivity
{
double areaAcoX;
double numeroBarrasX;
double areaBarraX;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculo_sap_isolada);
//Here is where i get the value of areaBarraX
if(SapataIsolada.getAço()==50)
{
final Spinner staticSpinner = (Spinner) findViewById(R.id.spinner_diametro_aço_x);
ArrayAdapter<CharSequence> staticAdapter = ArrayAdapter.createFromResource(this, R.array.diametro_aço_CA_50, android.R.layout.simple_spinner_item);
staticAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
staticSpinner.setAdapter(staticAdapter);
staticSpinner.setPrompt("Selecione o diâmetro da armadura");
staticSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l)
{
Object item = adapterView.getItemAtPosition(i);
if (i == 0) {
diametroAçoX = 0.5;
areaBarraX = 0.196;
}
if (i == 1) {
diametroAçoX = 0.63;
areaBarraX = 0.31;
}
if (i == 2) {
diametroAçoX = 0.8;
areaBarraX = 0.5;
}
if (i == 3) {
diametroAçoX = 1;
areaBarraX = 0.785;
}
if (i == 4) {
diametroAçoX = 1.25;
areaBarraX = 1.22;
}
if (i == 5) {
diametroAçoX = 1.6;
areaBarraX = 2.01;
}
if (i == 6) {
diametroAçoX = 2;
areaBarraX = 3.14;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
/* the value of areaAcoX is calculated previously and during the testrun it receives areaAcoX=11.36016 and the value of areaBarraX=0.5 */
numeroBarrasX=areaAcoX/areaBarraX;
Button calcular =(Button)findViewById(R.id.calcular_resultado);
calcular.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
//in altura.setText, areaAcoX==11.36016
TextView altura = (TextView)findViewById(R.id.alturaTotal);
altura.setText(""+areaAcoX);
//In ladoLtopo.setText, areaBarraX==0.5
TextView ladoLtopo = (TextView)findViewById(R.id.ladoL_topo);
ladoLtopo.setText(""+areaBarraX);
//In numBarrasX.setText, numeroBarrasX==Infinity
TextView numBarrasX = (TextView)findViewById(R.id.numeroBarras_x);
numBarrasX.setText(""+numeroBarrasX);
});
}
}
公共类CalculoSapIsolada扩展了AppCompative活动
{
双面积;
双倍数值;
双区Barrax;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u calculo\u sap\u isolada);
//这里是我得到areaBarraX值的地方
if(SapataIsolada.getAço()==50)
{
最终微调器staticSpinner=(微调器)findViewById(R.id.Spinner_diametro_aço_x);
ArrayAdapter staticAdapter=ArrayAdapter.createFromResource(这是R.array.diametro_ço___CA_50,android.R.layout.simple_spinner_项);
staticAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
staticSpinner.setAdapter(staticAdapter);
setPrompt(“Selecione o di–metro da armadura”);
staticSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener()
{
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l)
{
对象项=adapterView.getItemAtPosition(i);
如果(i==0){
diametroAçoX=0.5;
areaBarraX=0.196;
}
如果(i==1){
diametroAçoX=0.63;
areaBarraX=0.31;
}
如果(i==2){
diametroAçoX=0.8;
areaBarraX=0.5;
}
如果(i==3){
diametroAçoX=1;
areaBarraX=0.785;
}
如果(i==4){
diametroAçoX=1.25;
areaBarraX=1.22;
}
如果(i==5){
diametroAçoX=1.6;
areaBarraX=2.01;
}
如果(i==6){
diametroAçoX=2;
areaBarraX=3.14;
}
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
}
/*areaAcoX的值是先前计算的,在测试运行期间,它接收areaAcoX=11.36016和areaBarraX=0.5的值*/
numeroBarrasX=areaAcoX/AreaBarax;
Button calcular=(Button)findViewById(R.id.calcular\u resultado);
calcular.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图)
{
//在altura.setText中,areacox==11.36016
TextView altura=(TextView)findViewById(R.id.alturaTotal);
altura.setText(“+areacox”);
//在ladoLtopo.setText中,areaBarraX==0.5
TextView ladoLtopo=(TextView)findViewById(R.id.ladoL_topo);
ladoLtopo.setText(“+Areabarax”);
//在numBarrasX.setText中,numeroBarrasX==无穷大
TextView numBarrasX=(TextView)findViewById(R.id.numeroBarras_x);
numBarrasX.setText(“+numeroBarrasX);
});
}
}
我在这里没有显示的代码中有一些类似的操作,我没有在它们的值中得到无穷大错误。用类型double的0.0除以会产生无穷大。在初始化
areaBarraX
之前,这一行可能有一个除以0.0的值:
numeroBarrasX=areaAcoX/areaBarraX;
问题似乎在于,在计算
numeroBarrasX
之前,实际上没有计算areaBarraX
——您只需创建一个侦听器,每当单击时就会对其进行设置。如果将一个正数除以零(或将一个负数除以负零),结果将是无穷大。