最近,也不知道哪根筋搭错了,突然就对三角函数计算器这玩意儿较上劲了。主要也是因为家里小孩上学,时不时就得算个sin、cos啥的,我这脑子,毕业这么多年,那些公式早还给老师了,每次都得掏手机搜,或者用手机自带的计算器,但总感觉不太顺手。
寻思着找个现成的工具
我肯定是想着找个现成的APP用用得了。就去应用商店里搜呗,嚯,家伙,搜出来一大堆!
- 什么《全能计算器》
- 《多多计算器》
- 还有叫《几何计算器》的
看着都挺厉害的样子。有些APP宣传说能绘制函数、求导数、积分,功能老强大了。我一看,好家伙,这不就是以前上大学那会儿用的高级货嘛现在手机上都能跑了。可问题是,我就想简单算个角度,比如30度的正弦是多少,60度的余弦是多少,顶多再来个正切,用不着那么多花里胡哨的功能。
有的计算器,界面做得花里胡哨的,按钮一大堆,找个常用的sin、cos都得扒拉半天。还有更烦人的,一点开,广告先蹦出来占半个屏幕,等广告播完了,我黄花菜都凉了,计算的兴致都没了。试了好几个,总感觉不是这儿不爽就是那儿别扭。
干脆,咱自己动手试试?
挑来挑去,没找到一个用着特别称心的。我就寻思,这玩意儿技术上应该不算太难?要不,咱自己整个简单的?不求功能多牛掰,就满足咱日常这点小需求就行:
- 能算正弦、余弦、正切。
- 角度输入,直接出结果。
- 最好能支持角度制和弧度制的切换,虽然我平时用角度多。
有了这个念头,我就开始琢磨怎么实现了。
动手捣鼓的过程
咱也不是啥专业程序员,但多少也接触过点皮毛。一开始我想,最简单的,用个Excel行不行?在单元格里输个角度,然后用内置的SIN(), COS(), TAN()函数一拉,结果不就出来了?试了下,确实能行。但是,每次都得打开个Excel文件,感觉还是有点笨重,不够快捷。
后来我就想,能不能整个更轻巧点的?比如,用Python写个小程序?我以前瞎鼓捣过一点Python,感觉还挺好上手的。于是我就找了些资料,看看怎么用Python做个简单的图形界面,再调用math库里的三角函数。
说干就干,我先是弄了个简单的输入框,用来输角度。然后放了三个按钮,分别对应sin、cos、tan。最开始的时候,角度和弧度的转换把我给绕晕了。Python的math库里,sin这些函数默认接收的是弧度,但我习惯输入的是角度。所以还得加一步转换,把用户输入的角度乘以π再除以180。这个π取多少?一开始我直接用3.14,后来发现精度好像不太够,就改成了*,省心。
界面嘛咱也不追求啥美观了,就用了最基础的组件,能看就行。主要就是几个标签、输入框、按钮,再加个地方显示计算结果。过程中也遇到些小问题,比如按钮按了没反应,或者结果显示不出来,就一点点查,一点点改。有时候一个小小的标点符号错了,就能卡半天,这种感觉,干过活儿的都懂。
折腾完的成果和一点想法
前前后后,利用一些零碎时间,大概折腾了一个礼拜,总算是弄出来一个能跑的小工具。界面确实是简陋了点,跟我闺女幼儿园手工作品似的,哈哈。但是,自己用着还真挺顺手!输入角度,一点按钮,结果就出来了,清清爽爽,没广告,不卡顿。
这回瞎折腾,虽然没做出啥惊天动地的东西,但感觉还是挺有意思的。平时用别人开发好的软件,觉得一切都理所真轮到自己动手了,才发现哪怕是个看起来很简单的小功能,背后也有一堆细节要去考虑。比如用户输入异常了怎么办?数值精度怎么保证?这些都是问题。
通过这回实践,也算是把忘得差不多的三角函数又捡起来一点。现在辅导小孩作业,遇到这种计算,我就打开我自己做的这个小计算器,心里还有点小得意。果然,生命在于折腾,有时候自己动手解决一个小问题,带来的满足感还是挺强的。
下一步琢磨啥?或许可以给这个计算器加个历史记录功能?或者再整个别的什么实用小工具?谁知道,瞎玩呗!