[java]代码库
import javax.swing.JOptionPane;
public class Test
{
public static void main(String[] args)
{
String s=JOptionPane.showInputDialog("请输入数字:");
double a=Double.parseDouble(s);//转换成数字
double b=a;//临时存储
int p=0;//用于计算小数从0到出现第一位有效数字扩大了多少倍
while(b<1)
{
b=b*10;
p++;
}//如果数字小于1,则扩大十倍,直到数字不小于1
double c;
double q;
if(a<1)
{
q=1000;
c=b*q;
}//如果数字小于1,则将扩大过的数字再扩大1000倍,找到第三位有效小数的后一个数
else
{
q=10000;
c=b*q;
}//如果数字不小于1,则数字扩大10000倍,找到第三位有效小数的后一个数
double d=c;//临时存储
if(c%10*10%10>=5)
{
d=(c%10-c%10*10%10/10)+1;
}
else
{
d=c%10-c%10*10%10/10;
}
//通过取余计算第三位有效小数的后一位数,并对取余后的小数进行四舍五入
double f=q/10;//临时存储小10倍的q,便于下面循环里的计算使用
if(d<5)
{
a=c/10-(c%10)/10;//先把小数第三位有效小数后面的部分舍去
a=a/f/Math.pow(10,p);
}
else
{
a=(c/10-(c%10)/10)+1;
a=a/f/Math.pow(10,p);
}
//判断第三位有效小数的后一位数是否小于5,如小于5,则舍去,如大于等于5,则在第三位有效小数上加1
JOptionPane.showMessageDialog(null,"该数取三位有效小数后为:"+a);
System.exit(0);
}
}
by: 发表于:2017-07-19 16:25:57 顶(0) | 踩(0) 回复
??
回复评论