批次分数到 %
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 只是快速显示添加到自身的分数