allor
(allor)
2016 年3 月 9 日 14:29
1
需求如题,希望的使用方式&效果如下
按键 Win + R
输入 eval (1+2)*3-4/5
显示 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 个赞
zqn_chn
(逍遥猪葛亮)
2016 年3 月 10 日 15:53
6
夜深了,睡前提供一个思路:用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 个赞
Qingwa
(青小蛙)
2016 年3 月 11 日 09:06
10
啊不对,应该是我隐藏了…
不过话说我真的很少很少用…
AndroidOL
(AndroidOL)
2016 年3 月 12 日 01:47
14
VBS的换行让我想起以前学VB那会儿,好像是chr(13)&chr(10)或者vbCrLf。
LZ对win计算器的了解,估计MS听到后都要哭了。
win10的计算器功能其实还是很强大的,他包括多种计算和转换功能,左上角三横的那个图标就是选择按键,边上就有提示当前采用的功能。
LZ估计不知道,一打开默认用了标准计算功能,也就是简易计算功能,那是没有计算优先级的,一律从左到右计算,自然也就没有括号了,LZ用复制粘贴带括号的算式自然出错,不带括号的算式其实并没有算错。
LZ需要的应该是有计算优先级的计算功能,选择科学计算器功能就可以了。
MS不可能这么简单的小程序会出这么严重的bug吧
allor
(allor)
2016 年3 月 22 日 12:26
16
别瞎估计
win10版calc的功能我在第一次用时就点了个遍
MS爱哭不哭,不过是比旧版便利一点而已
既不能解方程组,又不能画函数图像
一开始我已说明为什么有这需求时,第一条就说了
有这需求主要是因为win10的计算器打开速度比旧版的慢了很多
在我的笔记本上,开calc时在启动画面有个明显卡顿
但我不可能为此换电脑,而且我用到calc的时候
99%的场景是算一下诸如1234-0.9*1024
这样的简单算式(算文件大小差异)
简单的需求+明显的卡顿→不耐烦→需求
另:科学模式下,我举的例子都计算正确
但标准模式计算最后一个例子还是会出错的
MS不是神,他是没把先乘除后加减
当作标准
功能……
1 个赞
Kyun
(權少)
2016 年4 月 26 日 09:49
19
不想用小娜,還有PowerShell啊,如果連PowerShell也不想用的話……
allor
(allor)
2016 年3 月 10 日 10:16
3
谢告知。
试了下,不成功
后来发现是因为没开Cortana+防火墙禁行,没法离线计算
在线计算的话用curl抓百度结果就可以实现
可我更偏爱用离线的工具软件(虽然早已是互联网时代
allor
(allor)
2016 年3 月 11 日 14:47
13
没耍过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 个赞