linux + ksh + 向下舍入或向上舍入 - float

标签 linux perl shell awk ksh

在我的 ksh 脚本中我只需要计算整数

有时我会得到 float ,例如 3.49 或 4.8...等

所以我需要根据以下规则(示例)将 float 转换为整数

3.49     will be 3
2.9      will be 3
4.1      will be 4
23.51    will be 24
982.4999 will be 982

10.5     will be 11  ( this example if float is .5 then it will roundup )

请建议如何在 ksh 或 awk 或 perl 中执行此操作

或者

可以在我的 ksh 脚本中运行的任何其他语言

最佳答案

经过简短的 google session 后,我发现 printf 似乎能够完成这项工作,至少在 bash 中是这样(找不到执行 ksh 的在线解释器)。

printf "%0.f\n" 4.51
5
printf "%0.f\n" 4.49
4

代码:http://ideone.com/nEFYF

注意:perl 可能有点矫枉过正,如 Marius 所说,但这里有一个 perl 方法:

perl 模块 Math::Round似乎可以胜任这项工作。

一行:

perl -MMath::Round -we 'print round $ARGV[0]' 12.49

脚本:

use v5.10;
use Math::Round;
my @list = (3.49, 2.9, 4.1, 23.51, 982.4999);

say round $_ for @list;

脚本输出:

3
3
4
24
982

关于linux + ksh + 向下舍入或向上舍入 - float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8777070/

相关文章:

bash - Shell 脚本单元测试 : How to mockup a complex utility program

linux - centos自动修改权限

linux - ELF 二进制错误 Unix ("./X No such file or directory")

linux - 如何连接与模式匹配的行?

Perl BEGIN 编译失败,因为标量 @list

perl - 准备要在 Ubuntu 和 tabix 上运行的 Perl 文件

linux - 如何调整NAPI的轮询周期?

linux - 在 shell 脚本中仅提取文件名(无目录名)

从 log.sql 重新转储 MYSQL 全部或全部

linux - 将批处理文件转换为 Linux Shell 脚本