天道酬勤,学无止境

calculator

计算器如何精确工作?(How do calculators work with precision?)

问题 我想知道计算器是如何精确工作的。 例如,以double精度计算时, sin(M_PI)值不完全为零: #include <math.h> #include <stdio.h> int main() { double x = sin(M_PI); printf("%.20f\n", x); // 0.00000000000000012246 return 0; } 现在我当然想在用户输入 sin(π) 时打印零。 我可以轻松地在 1e–15 上的某个地方进行四舍五入以使这个特定案例起作用,但这是一个技巧,而不是解决方案。 当我开始这样舍入并且用户输入 1e-20 之类的东西时,他们得到一个零(因为舍入)。 当用户输入 1/10 并反复按下=键时,会发生同样的事情——当他达到舍入阈值时,他得到零。 然而,一些计算器为 sin(π) 返回纯零,同时它们可以轻松地处理诸如 (1e–20)/10 之类的表达式。 诀窍在哪里? 回答1 桌面计算器使用任意精度的数学库。 这些可以配置为具有更高的精度。 手持计算器(传统专用和移动电话)使用固定精度的数学库。 如果要精确打印为零,请使用宽度说明符 printf (%12.4d, number); 回答2 可以在此计算器精度页面上找到一些答案。 解决方案包括: 在 BCD 工作使用查找表使用隐藏数字,使显示的数字准确 回答3 如前所述

2021-09-16 01:40:18    分类:技术分享    floating-point   precision   calculator

如何在运算符处拆分字符串(How to split string at operators)

问题 我用 Java 创建了一个计算器。 如果我让用户输入一个字符串,例如: 7+4-(18/3)/2 到目前为止,我不得不让用户在每个数字或运算符之间输入一个空格。 我将如何从给定的字符串创建一个数组,其中字符串在数字或运算符处拆分,因此在这种情况下,数组将是: [7, +, 4, -, (, 18, /, 3, ), /, 2] (数组是字符串类型) 任何帮助将非常感激 谢谢 :) 回答1 您尚未指定要对数组执行的操作。 如果您真的想评估表达式,那么已经有可用的库。 您可以使用其中之一。 但是,如果您只想要一个像您显示的那样的数组,那么我也不建议使用正则表达式。 您可以编写自己的解析器方法,如下所示: public static String[] parseExpression(String str) { List<String> list = new ArrayList<String>(); StringBuilder currentDigits = new StringBuilder(); for (char ch: str.toCharArray()) { if (Character.isDigit(ch)) { currentDigits.append(ch); } else { if (currentDigits.length() > 0) { list.add

2021-09-13 05:44:43    分类:技术分享    java   arrays   string   split   calculator

谷歌计算器中的特殊字符(Special Characters in Google Calculator)

问题 在上一个问题中,我被告知 Google 将 UTF-8 编码的响应传递给查询。 这解决了通过 curl 传递到我的终端后不间断空格 (A0) 被混淆的问题。 这是通过将 curl 输出传输到 inconv 并转换为 UTF-8 来解决的。 然而,即使有了这个解决方案,我仍然得到一些奇怪的输出。 考虑以下 2 m 到英尺的转换: http://www.google.com/ig/calculator?hl=en&q=2%20m%20in%20feet 这是我在浏览器和其他地方看到的输出: {lhs: "2 meters",rhs: "6.56167979 feet (6 feet 6\x3csup\x3e47\x3c/sup\x3e\x26#8260;\x3csub\x3e64\x3c/sub\x3e inches)",error: "",icc: false} 预期的输出是: {lhs: "2 meters",rhs: "6.56167979 feet (6 feet 6 47/64 inches)",error: "",icc: false} 我可以使用正则表达式或其他一些解决方案进行文本替换,但我想知道这里发生了什么。 任何见解? 我正在运行 Mac OS X Mountain Lion 10.8.2 回答1 通过 curl 访问的 Google 计算器返回 JSON。

2021-09-11 11:27:30    分类:技术分享    unicode   terminal   google-api   osx-mountain-lion   calculator

使用 php 和谷歌距离矩阵 api v2 计算出租车费(taxi fare calculation using php with google distance matrix api v2)

问题 我想在我的网站上计算出租车费用。 我有以下要求: 如果谷歌距离矩阵计算显示以下距离公里,比率应该是这样的: 从 0 -10km = $65(固定价格)+ 11% 10 公里 = 70 美元 + 11% 15 公里 = 80 美元 + 11% 20 公里 = 90 美元 + 11% 25 公里 = 100 美元 + 11% 30 公里 = 120 美元 + 11% 30公里以上=$4/公里 我把从 10 公里以上到 30 公里每公里 2 美元的费率加上 50 美元的额外费用,结果: 如果出租车 如果开车 20km = 20km × $2 + $50 = $90 + 11% 21km = 21km × $2 + $50 = $92 + 11% 22km = 22km × $2 + $50 = $94 + 11% 以此类推 但我不知道如何计算 65 美元的固定价格,这是 10 公里以下距离的固定价格,30 公里和 30 公里以上的固定价格为 120 美元,即 4 美元/公里。 我用于谷歌距离矩阵的脚本是显示 $2/km + $50 修复 :(我没有在这个脚本中添加 11%) <script src="http://maps.google.com/maps?file=api&v=2&key=_MY_API_KEY" type="text/javascript"></script> <

2021-09-11 09:00:27    分类:技术分享    php   math   calculator   google-maps-api-2

涉及反向波兰计算器的正则表达式问题(Regexp issue involving reverse polish calculator)

问题 我正在尝试使用正则表达式来解决反向波兰语计算器问题,但是我在将数学表达式转换为传统形式时遇到了问题。 我写: puts '35 29 1 - 5 + *'.gsub(/(\d*) (\d*) (\W)/, '(\1\3\2)') 打印: 35 (29-1)(+5) * 预期的 (35*((29-1)+5)) 但我得到了不同的结果。 我究竟做错了什么? 回答1 我假设你的意思是你尝试过 puts '35 29 1 - 5 + *'.gsub(/(\d*) (\d*) (\W)/, '(\1\3\2)') ^ ^ 无论如何,您必须使用量词+而不是* ,否则您将匹配\d*的空字符串作为您的捕获之一,因此(+5) : /(\d+) (\d+) (\W)/ 我会进一步将表达式扩展/限制为: /([\d+*\/()-]+)\s+([\d+*\/()-]+)\s+([+*\/-])/ | | | | | | | | | Valid operators, +, -, *, and /. | | | | | | | Whitespace. | | | | | Arbitrary atom, e.g. "35", "(29-1)", "((29-1)+5)". | | | Whitepsace. | Arbitrary atom, e.g. "35", "(29-1)", "((29-1)+5)

2021-09-11 08:10:36    分类:技术分享    ruby   regex   calculator   rpn

.on('Input') dynamic updates and additions

I have a set of HTML number inputs with ID's YXS, YSM, YMED I can get the values of each input, add them together, and display the result to #output. HOWEVER, it only works when entered in order YXS, YSM, YMED If i remove YSM so its blank, i only get YXS as a value output to #output. Im trying to work it, so what ever values are entered, they're either added together and displayed, or if only 1 value is entered, then that value is displayed to #output regardless of the order of input. Ive been scratching my head with it all day, so looking for some help where possible! Here is my code : $('

2021-09-08 00:07:27    分类:问答    javascript   php   jquery   html   calculator

Mortgage calculator math error

This program runs fine, but the monthly payment it returns is totally off. For a principal amount of $400,000, interest rate of 11%, and a 10-year payment period, it returns the monthly payment of $44000.16. I googled the equation (algorithm?) for mortgage payments and put it in, not sure where I'm going wrong. import locale locale.setlocale(locale.LC_ALL, '') def mortgage(principal, interest, n): payment = principal*((interest*(1+interest)**n) / ((1+interest)**n-1)) return payment principal = float(input("What is the amount of the loan you are taking out? $")) interest = float(input("What is

2021-09-04 11:06:48    分类:问答    python   math   calculator

Regexp issue involving reverse polish calculator

I'm trying to use a regular expression to solve a reverse polish calculator problem, but I'm having issues with converting the mathematical expressions into conventional form. I wrote: puts '35 29 1 - 5 + *'.gsub(/(\d*) (\d*) (\W)/, '(\1\3\2)') which prints: 35 (29-1)(+5) * expected (35*((29-1)+5)) but I'm getting a different result. What am I doing wrong?

2021-09-03 20:22:22    分类:问答    ruby   regex   calculator   rpn

taxi fare calculation using php with google distance matrix api v2

I want to have a taxi fare calculation in my website. I have the following requirements: If Google Distance Matrix calculation show following distance kilometers, the rate should go like this: From 0 -10km = $65 (fixed price) + 11% 10km = $70 + 11% 15km = $80 + 11% 20km = $90 + 11% 25km = $100 + 11% 30km = $120 + 11% 30km above = $4 / km I put rate as $2 per km from 10 km above till 30km + $50 extra which result : if taxi if drived for 20km = 20km × $2 + $50 = $90 + 11% 21km = 21km × $2 + $50 = $92 + 11% 22km = 22km × $2 + $50 = $94 + 11% and so on but i am dont know to calculate the fixed

2021-09-02 19:34:32    分类:问答    php   math   calculator   google-maps-api-2

Special Characters in Google Calculator

In a previous question I was told that Google passes UTF-8 encoded responses to queries. This solved a problem with non-breaking spaces (A0) being muddled after being passed by curl to my terminal. This was solved by piping the curl output to inconv and converting to UTF-8. However, even with this solution in place, I am still getting some strange output. Consider the following conversion of 2 m to feet: http://www.google.com/ig/calculator?hl=en&q=2%20m%20in%20feet This is the output I'm seeing in my browser and elsewhere: {lhs: "2 meters",rhs: "6.56167979 feet (6 feet 6\x3csup\x3e47\x3c/sup

2021-09-02 01:55:51    分类:问答    unicode   terminal   google-api   osx-mountain-lion   calculator