批次分数到 %

Posted

技术标签:

【中文标题】批次分数到 %【英文标题】:batch Fraction to % 【发布时间】:2021-05-21 13:49:39 【问题描述】:

我一直在尝试在批处理中编写一个简短的脚本,将分数格式的两个变量(%a%,分子和 %b%,分母)转换为百分比 (%c%)

批处理变量只支持整数,所以我不能用:

set /A c="%a% / %b% * 100" 

我听说过通过 .vbs 脚本解决此问题(将 %a% 和 %b% 导出到脚本,让脚本进行数学运算,然后将结果导入批处理)

有没有更简单的方法来做到这一点?特别是不使用外部脚本(如果必须是外部脚本,则应在与 .bat 相同的目录中临时创建它,然后在完成其目的后将其删除)

我确信这听起来像是一个“为我做”类型的问题,但我无法在任何地方找到答案,如果有更简单的方法,请帮助我。

【问题讨论】:

set /A 执行 32 位有符号整数运算…… @aschipfl 好吧,我知道,'set /A' 不支持使用实数(小数),所以我提出的表达式不起作用,因为第一个操作(/)输出一个总是向下舍入的小数,这意味着除非操作的结果是 1,否则它总是输出 0。因此 C 只能是 0 或 100 【参考方案1】:

如果您只需要整数值,您可以重新排序表达式

set /A "c= (a*100) / b"

为了更准确,您可以使用

set /A "c= ( a*100 + b/2 ) / b"

如果你需要一些小数位,只需乘以更大的值

set /A "r= (a*10000) / b"
echo %r:~0,-2%.%r:~-2%

【讨论】:

【参考方案2】:

使用小数进行数学运算是我极少数推荐在批处理脚本中使用 powershell 的情况之一。

for /f "delims=" %%A in ('powershell %a%/%b%*100') do set "c=%%A"

【讨论】:

很遗憾,我可能无法使用 PowerShell,我正在一台运行 windows XP pro 的旧气隙机器上编写此脚本,(说来话长),PowerShell 没有出现- 安装到 Windows 7。 不用解释了;我在生产环境中看到很多应用程序在 XP 之后与 Windows 不兼容。

以上是关于批次分数到 %的主要内容,如果未能解决你的问题,请参考以下文章

北京交通大学海滨学院计算机科学与技术课程,北京交通大学海滨学院计算机科学与技术专业2016年在内蒙古理科高考录取最低分数线...

当我添加分数时, scoreText 只是快速显示添加到自身的分数

Python程序设计《集美大学各省成绩分析》

小数怎么化成分数

Joda DateTime 到 BigDecimal 分数计算

python 将小数转化为百分数