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) 回复
??
回复评论