免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6847 | 回复: 14
打印 上一主题 下一主题

如何在if-else中比较两个浮点数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-02 10:56 |只看该作者 |倒序浏览
比如:
a=1.25
b=100.21
我想比较a和b,如果a>b,输出"ok"
在if中用-ge的话会提示a应该是整数,那么浮点数应该怎么比较呢?谢谢

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2007-07-02 11:04 |只看该作者
试试awk/bc

论坛徽章:
0
3 [报告]
发表于 2007-07-02 11:45 |只看该作者
好象都不是直接用shell ,你可以参考下
http://bbs.chinaunix.net/viewthread.php?tid=926414

论坛徽章:
0
4 [报告]
发表于 2007-07-02 20:15 |只看该作者
如果單單比較大小,可以
[victor@localhost ~]$ unset a b
[victor@localhost ~]$ a=10#1.25 ; b=10#100.21
[victor@localhost ~]$ [[ $b < $a ]]  && echo b  is bigger || echo a is smaller
a is smaller
[victor@localhost ~]$ [[ $b > $a ]]  && echo b  is bigger || echo a is small
b is bigger
[victor@localhost ~]$

我的是 Bash3 , 如要作運算則如 waker 所言, bc 或 awk
好像 ksh93 和 zsh 內建浮點運算,但我不太懂....

论坛徽章:
0
5 [报告]
发表于 2007-07-02 20:25 |只看该作者
4楼 twf_cc 的办法最合适. 利用'.'在ascii中小于各种数字, 进行字符串比较. 速度上也很快. sort的-n选项就是使用字符串比较.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2007-07-02 23:35 |只看该作者
a=10#1.15 b=10#1.16
用上面的再跑一次?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2007-07-03 00:03 |只看该作者
awk最通用 ^_^

论坛徽章:
0
8 [报告]
发表于 2007-07-04 20:59 |只看该作者
victor@localhost ~]$ unset a b
[victor@localhost ~]$ a="10.15" ; b="10.16"
[victor@localhost ~]$ [[ $a < $b ]] && echo $a || echo $b
10.15
[victor@localhost ~]$ [[ $a > $b ]] && echo $a || echo $b
10.16
[victor@localhost ~]$

论坛徽章:
0
9 [报告]
发表于 2007-07-04 21:02 |只看该作者
[victor@localhost ~]$ bash --version
GNU bash, version 3.00.16(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
[victor@localhost ~]$ unset a b
[victor@localhost ~]$ a="10.151" ; b="10.16"
[victor@localhost ~]$ [[ $a > $b ]] && echo $a || echo $b
10.16
[victor@localhost ~]$ [[ $a < $b ]] && echo $a || echo $b
10.151
[victor@localhost ~]$

论坛徽章:
0
10 [报告]
发表于 2007-07-04 21:17 |只看该作者
[victor@localhost ~]$ unset a b
[victor@localhost ~]$ a="0.01" ; b="0.02"
[victor@localhost ~]$ [[ $a > $b ]] && echo $a || echo $b
0.02
[victor@localhost ~]$ [[ $a < $b ]] && echo $a || echo $b
0.01
[victor@localhost ~]$
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP