如果显示只有 E ,说明计算超出范围(也就是溢出)错误。按 C 或 AC 就可以了。如果显示如 2.343256257e-12,则表示 0.000000000002343256257 。
我感觉你用的是float吧,double应该位数会多一点。
但也不会达到30位。因为一个是4字节,一个是8八字节(当然8八字节的64位中不全不都是用来表示精度的,这个意思吧),不是能不能算到30位,而是你接收结果的变量根本装不下30位。
你可以自己实现sin算法,以字符串表示输出结果,这样你要多少位都可以了(只有你愿意等计算的时间)
老实说,如果你真的有必要要这么多位,你或许找专门的数学类工具或语言会比较好。
手机软件吗?搜索双行计算器。
计算器的话,卡西欧fx-82es即可。
估算就可以了,没必要那么精准,差距能在0.1到0.4距之间都能打到
这是科学计数法,意思是1.29319×10^(-12),也就是1.29319×0.000000000001
1:使用 expr 外部程式
加法 r=`expr 4 + 5`
echo $r
注意! '4' '+' '5' 这三者之间要有空白
r=`expr 4 * 5` #错误
乘法 r=`expr 4 \* 5`
带括号的
expr \( 5 - 3 \) \* 3 + 1
2:使用 $(( ))
r=$(( 4 + 5 ))
echo $r
3:使用 $[ ]
r=$[ 4 + 5 ]
echo $r
乘法
r=`expr 4 \* 5`
r=$(( 4 * 5 ))
r=$[ 4 * 5 ]
echo $r
除法
r=`expr 40 / 5`
r=$(( 40 / 5 ))
r=$[ 40 / 5 ]
echo $r
减法
r=`expr 40 - 5`
r=$(( 40 - 5 ))
r=$[ 40 - 5 ]
echo $r
求余数
r=$[ 100 % 43 ]
echo $r
乘幂 (如 2 的 3 次方)
r=$(( 2 ** 3 ))
r=$[ 2 ** 3 ]
echo $r
注:expr 没有乘幂
4:使用let 命令
加法:
n=10
let n=n+1
echo $n #n=11
乘法:
let m=n*10
echo $m
除法:
let r=m/10
echo $r
求余数:
let r=m%7
echo $r
乘幂:
let r=m**2
echo $r
虽然Bash shell 有四种算术运算方法,但并不是每一种都是跨的,建议使用expr。
另外,我们在 script 中经常有加1操作,以下四法皆可:
m=$[ m + 1]
m=`expr $m + 1`
m=$(($m + 1))
let m=m+1
另外,还可以使用bc
m=`echo "( $a - 1 )*$b +1" |bc`
除数或被除数有一个不是整型数据就可以。
如果是常数计算,直接加上小数点和0即可
执行一下,体会一下吧:
declare @a decimal(12,4),@b int,@c decimal(12,4)
select @a=10,@b=3,@c=3
select @a/@b,@a/@c,@a/3,@b/2.0,@b/2,@c/2,3/2,3.0/2
7÷9=0.777……
商的小数点的右边第100位上的数字是7;
3÷11=0.2727……
商的小数点的右边第100位上的数字是7。
解:
4020÷600
=40.2÷6
=6.7
4020除以六百=6.7
1楼错了,1楼只是设置了显示的问题,而没有消除 三种方法、楼主按你想要的取一种: 1、向上取整,即:1.51、1.52、1.53、1.58都取为1.6 F6=ROUNDUP(D6*E6,1) 2、向下取整,即:1.51、1.52、1.53、1.58都取为1.5 F6=ROUNDDOWN(D6*E6,1) 3、四舍五入,即:1.51取为1.5;1.56取为1.6 F6=ROUND(D6*E6,1)