有没有可以在运行栏计算算式值的软件[Win]?

需求如题,希望的使用方式&效果如下

  1. 按键 Win + R
  2. 输入 eval (1+2)*3-4/5
  3. 显示 8.2

有这需求主要是因为win10的计算器打开速度比旧版的慢了很多
而且对算式的支持差到不敢置信

错误实例(复制等号左侧算式到计算器→Enter)

1 + 2 * 3 = 9
1 + 2 / 3 = 1
(1 + 2) * 3 = 无效输入
(1 + 2) / 3 = 无效输入
1 * 2 + 3 / 4 = 1.25

注:

  • 请别推荐Launchy之类的快速启动类软件,就我的需求来说,这无疑是买椟还珠
  • 浏览器地址栏/搜索引擎能直接算,但无法离线使用
1 Like

直接使用任务栏的搜索框就可以了。Win+Q 启动

夜深了,睡前提供一个思路:用python写个脚本,类似于:

from __future__ import division
import sys
from math import *

if __name__ == "__main__":
    if len(sys.argv) > 1:
        print(''.join(sys.argv[1:]))
        print(eval(''.join(sys.argv[1:])))
    else:
        print(0)

再打包成exe放PATH下。

不过打包我不会,得请教其他老师。

1 Like

其实有的时候觉得 Mac 的小工具界面很科学!

……

啊不对,应该是我隐藏了…
不过话说我真的很少很少用…

哪里?

VBS的换行让我想起以前学VB那会儿,好像是chr(13)&chr(10)或者vbCrLf。

LZ对win计算器的了解,估计MS听到后都要哭了。

win10的计算器功能其实还是很强大的,他包括多种计算和转换功能,左上角三横的那个图标就是选择按键,边上就有提示当前采用的功能。

LZ估计不知道,一打开默认用了标准计算功能,也就是简易计算功能,那是没有计算优先级的,一律从左到右计算,自然也就没有括号了,LZ用复制粘贴带括号的算式自然出错,不带括号的算式其实并没有算错。

LZ需要的应该是有计算优先级的计算功能,选择科学计算器功能就可以了。

MS不可能这么简单的小程序会出这么严重的bug吧

别瞎估计
win10版calc的功能我在第一次用时就点了个遍
MS爱哭不哭,不过是比旧版便利一点而已
既不能解方程组,又不能画函数图像

一开始我已说明为什么有这需求时,第一条就说了
有这需求主要是因为win10的计算器打开速度比旧版的慢了很多
在我的笔记本上,开calc时在启动画面有个明显卡顿
但我不可能为此换电脑,而且我用到calc的时候
99%的场景是算一下诸如1234-0.9*1024这样的简单算式(算文件大小差异)
简单的需求+明显的卡顿→不耐烦→需求

另:科学模式下,我举的例子都计算正确
但标准模式计算最后一个例子还是会出错的
MS不是神,他是没把先乘除后加减当作标准功能……

1 Like

直接写一个程序也快呀。

不想用小娜,還有PowerShell啊,如果連PowerShell也不想用的話……

谢告知。
试了下,不成功
后来发现是因为没开Cortana+防火墙禁行,没法离线计算

在线计算的话用curl抓百度结果就可以实现
可我更偏爱用离线的工具软件(虽然早已是互联网时代

Cortana 不会计算么?

新版已经没有小工具了

我关了Cortana,小娜没法离线用啊

没耍过Py,用VBS写了一个
最终还是得自力更生
效果:

Equal.vbs代码 :

help = "◆基本────────────────────" &vbCr&_
       "   + 加    - 减    * 乘    / 除    \ 整除   " &vbCr&_
       "   2^10  2的10次方   md(a,b)  求余  () 括号   " &vbCr&_
       "◆函数────────────────────" &vbCr&_
       "   abs()  绝对值   sin()  正弦   exp()  e^n  " &vbCr&_
       "   sqr()  平方根   cos()  余弦   log()  对数 " &vbCr&_
       "   atn()  反正弦   tan()  正切   Int()  取整 " &vbCr&_
       "   hex()  16进制   oct()  8进制  Rnd  随机数 " &vbCr&_
       "◆特殊────────────────────" &vbCr&_
       "   Round(m,n)                四舍五入,n位小数 " &vbCr&_
       "   Int((m-n+1)*Rnd)+n        随机数[m-n]      " &vbCr&_
       "   Hex(RGB(blue,green,red))  RGB颜色→HEX颜色 " &vbCr&_
       "   DateAdd(mode,num,dateX)   计算间隔后的时间" &vbCr&_
       "   DateDiff(mode,date1,date2)计算两时间的间隔 " &vbCr&_
       "   :mode = m、w、d、h、n、s  月周日时分秒     " &vbCr&_
       "◆预设────────────────────" &vbCr&_
       "   pi=3.14  ms=1000    t=60                 " &vbCr&_
       "   kb=1024  mb=kb^2  gb=kb^3  bit=8          " &vbCr&_
       "   Date=当前日期  Time=当前时间  Now=Date+Time " &vbCr&_
       "◆其他────────────────────" &vbCr&_
       "   /?  帮助模式(即当前模式,无需输入等号)"
title = "equal.vbs - allor"
pi = 3.14 : ms = 1000 : t = 60 :_
kb = 1024 : mb = kb^2 : gb = kb^3 : bit = 8 :_
m = "m" : w = "w" : d = "d" : h = "h" : n = "n" : s = "s"
Function md(a,b)
  md = a Mod b
End Function

Dim arg,exp,eg,re
Randomize
Set arg = WScript.arguments
If arg.Count = 0 Then exp = InputBox(help,title) Else exp = arg(0) 
If exp = "/?" Then exp = InputBox(help,title)
On Error Resume Next
eg = Eval(exp)
If Err.Number Then
  MsgBox("数值溢出 或 输入有误 或 -_-|||")
Else
  CreateObject("wscript.Shell").Run "cmd.exe /c echo " & eg & " | clip",0,0
  re = MsgBox(exp &vbCr& "= " & eg &vbCr& "结果已复制到剪贴板",0,title)
End If
WScript.Quit

**注:**直接把equal.vbs所在目录添加到用户变量里的话
必须像equal.vbs expression这样输入完整的文件名及后缀名
但可以创建一个名为 **=**的快捷方式实现GIF中的效果

另:算式中不能带空格(因脚本中只读取一个参数)
同样原因只能把原生的求余函数Mod(a Mod b)改为自定义函数md(a,b)

有特殊需求的可自行添加相应自定义函数

3 Likes

有没有一行搞定的技巧……

快捷键呼出一大波小工具好爽……