awk判断整除(包含小数和负数)
awk判断整除常用的方法是用内置的int或者求余数的算符%
被整数整除
输出0-100之间能被9整除的整数
使用 num/9==int(num/9) 的判断方法可以很好实现。
awk 'BEGIN{
for (i=0; i<100; i++) {
if (i/9==int(i/9)) print i
}}' | cat
或者使用 num%9==0 也可以轻松实现
awk 'BEGIN{
for (i=0; i<100; i++) {
if (i%9==0) print i
}}' | cat
被小数整除
常犯的错误
但是,如果输出数列0.01, 0.02, 0.03, ... 1.00中能够被0.09整除的数字时,
使用num/0.09==int(num/0.09)就行不通了,因为会遗漏很多数字。
使用命令awk 'BEGIN{for (i=0; i<1; i+=0.01) print i,i/0.09-int(i/0.09)}' 的输出部分结果是:
0 0 0
0.01 0.01 0.111111
0.02 0.02 0.222222
...
0.16 0.07 0.777778
0.17 0.08 0.888889
0.18 2.77556e-17 4.44089e-16
0.19 0.01 0.111111
...
0.88 0.07 0.777778
0.89 0.08 0.888889
0.9 6.10623e-16 7.10543e-15
0.91 0.01 0.111111
0.92 0.02 0.222222
0.93 0.03 0.333333
0.94 0.04 0.444444
0.95 0.05 0.555556
0.96 0.06 0.666667
0.97 0.07 0.777778
0.98 0.08 0.888889
0.99 6.93889e-16 7.10543e-15
其中0.18,0.27都不是0,而是一个很小的数字,所以上面的方法只适用于整数的情况。
正确方法
输出数列 3.0, 3.1, 3.2, 3.3, ... 5.0 中的可以被0.8整除的数字(正确答案是3.2, 4.0和4.8)
命令awk 'BEGIN{for (i=3; i<5; i+=0.1) print i,i%0.8,i/0.8-int(i/0.8)}'输出的结果是
3 0.6 0.75
3.1 0.7 0.875
3.2 0 0 !结果正确
3.3 0.1 0.125
3.4 0.2 0.25
3.5 0.3 0.375
3.6 0.4 0.5
3.7 0.5 0.625
3.8 0.6 0.75
3.9 0.7 0.875
4 6.66134e-16 8.88178e-16 !结果错误
4.1 0.1 0.125
4.2 0.2 0.25
4.3 0.3 0.375
4.4 0.4 0.5
4.5 0.5 0.625
4.6 0.6 0.75
4.7 0.7 0.875
4.8 0.8 1 !结果错误
4.9 0.1 0.125
5 0.2 0.25
所以正确的方法是使用以下命令:
awk 'BEGIN{
for (i=3; i<5; i+=0.1) {
if (i/0.8-int(i/0.8)<0.001 || i/0.8-int(i/0.8)>0.999) print i
}}' | cat
或者使用以下命令:
awk 'BEGIN{
for (i=3; i<5; i+=0.1) {
if (i%0.8<0.001 || i%0.8>0.799) print i
}}' | cat
awk判断整除(包含小数和负数)的更多相关文章
- noi 3531 判断整除
3531:判断整除 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和.比如序列:1.2.4共有 ...
- 【OpenJudge3531】【背包DP】【膜法交配律】判断整除
判断整除 总时间限制: 1000ms 内存限制: 65536kB [描述] 一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和.比如序列:1.2.4共有8种可能的序列:(+1) + (+ ...
- Python_代码练习_写一个判断是否为小数的函数
这两天在学习函数,练习写一个判断是否为小数的函数,看起来蛮简单的,飞速写完很是得意,然后测了一下,发现差得好多呀,这个并不像想象那样简单,我得到的教训是,想要把一个需求哪怕再小的需求考虑周全,都不是件 ...
- input框只允许输入正整数、正数(包含小数)的解决方法 vue.js实现
我来打自己脸了!!!!...刚刚发现在中文输入法下是无效的,有人能解决这个问题么 如果要求input只能输入数字怎么做? 设置type="number" ? 那我如果想限制长度,此 ...
- JS判断字符串包含的方法
本文实例讲述了JS判断字符串包含的方法.分享给大家供大家参考.具体如下: 1. 例子: 1 2 3 4 5 6 7 8 var tempStr = "tempText" ; var ...
- struts2 用if标签判断字符串包含
String testStr = "用来判断是否包含的字符串"; <s:property value="testStr"/> <s:if te ...
- js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法
var questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...
- PHP 判断是否包含某字符串
PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用.PHP判断字符串的包含,可以使用PHP的内置函数 strstr,strpos,stristr直接进行判断.也可以通过e ...
- PHP 判断是否包含在某个字符串中
1.用strpos函数,查找字符首次出现的位置,如果不存在则会返回false$str= 'abc';$needle= 'e';$pos = strpos($str, $needle);2.用strst ...
- js函数验证方式:验证是否是数字,支持小数,负数
验证 datatype="/^\d+(\.\d+)?$/" validatform验证是否是数字 支持小数点 datatype="d" 貌似支持小数 js函数验 ...
随机推荐
- idea更改JDK版本_Mac
大致分为几个步骤: 在SDKs中添加JDK(已经添加过就不用添加了) 修改项目的Project SDK和Project language level(两个版本要一致) 修改Modules中的Sourc ...
- 关于TCP协议传文件的例子
按照惯例,先来进行复习,这也是自学巩固的一个过程 首先是在工程文件PRO里,需要增加network,这个是引用TCP监听套接字和连接套接字的前提 第二部,在服务端头文件server.h进行基础的配置: ...
- C#截取字符串的方法
#region 得到字符串的长度 /// <summary> /// 得到字符串的长度 /// </summary> /// <param nam ...
- Word 找不到 Endnote选项
Word 2010 找不到 Endnote选项汇总(不是Office有效加载项)因为基本百度上的问题我全都遇到了-说明:在我们使用Word的过程中,常常发现没有Endnote选项.然后去找百度方法:1 ...
- Ansible之Playbook介绍和使用
1.https://blog.csdn.net/zfw_666666/article/details/124691877 1.Playbook介绍 Playbook与ad-hoc相比,是 ...
- flask接口动态注册--依赖于蓝图
# 实现代码 blueprint_d = dict() dirs = os.listdir(base_dir) # 获取apps路径下所有文件夹列表 for d in dirs: ## 1.遍历模块文 ...
- Windows 下TCP长连接保持连接状态TCP keepalive设置
TCP长连接建立完成后,我们通常需要检测网络的连接状态,以反馈给客户做响应的处理.通过设置TCP keepalive的属性,打开socket的keepalive属性,并设置发送底层心跳包的时间间隔.T ...
- 多路复用IO:select poll epoll
[电话面试]io多路复用专题面试 这个真猛 有人做了笔记:点这里 select Select(Max+1,&rset,null,null,null)是因为0~max是max+1. 过程: 将文 ...
- MySql生成ER【StarUML】文件
1. 背景 要画ER图,一个个打费时费力,StarUML文件打开是json.那么就有可能自动生成. 2. 效果 把表结构生成好,自己只要维护关系即可. 3. 代码 import lombok.Data ...
- java异常--基础内容
java异常--基础内容 异常指程序运行中出现的不期而至的各种状况:文件找不到,网络连接失败,非法参数... 异常发生在程序运行期间,他影响了正常的程序执行流程. 三种类型异常(Exception): ...