我想知道计算器如何精确地工作.例如,sin(M_PI)当以double精度计算时,值不完全为零:
#include <math.h>
#include <stdio.h>
int main() {
double x = sin(M_PI);
printf("%.20f\n", x); // 0.00000000000000012246
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我肯定想在用户输入sin(π)时打印零.我可以轻松地在1e-15的某个地方绕过来使这个特殊情况起作用,但这是一个黑客,而不是解决方案.当我开始像这样循环并且用户输入类似1e-20的东西时,他们得到零回归(因为四舍五入).当用户输入1/10并=重复点击键时会发生同样的事情- 当他达到舍入阈值时,他会得到零.
然而,有些计算器为sin(π)返回纯零,同时它们可以舒适地处理诸如(1e-20)/ 10之类的表达式.诀窍在哪里?
我想从我的应用程序中调用android计算器.我不想传递任何东西,只需提供一个快速启动按钮.任何人都可以告诉我如何或指出我如何做到这一点的例子?
我正在尝试创建一个基本calculator的Java.我对编程很陌生,所以我试着习惯它.
import java.util.Scanner;
import javax.swing.JOptionPane;
public class javaCalculator
{
public static void main(String[] args)
{
int num1;
int num2;
String operation;
Scanner input = new Scanner(System.in);
System.out.println("please enter the first number");
num1 = input.nextInt();
System.out.println("please enter the second number");
num2 = input.nextInt();
Scanner op = new Scanner(System.in);
System.out.println("Please enter operation");
operation = op.next();
if (operation == "+");
{
System.out.println("your answer is" + (num1 + num2));
}
if (operation == "-");
{
System.out.println("your answer is" + (num1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个简单的计算器来练习图形(我是一个完整的GUI菜鸟).我在使用Polyashenkos校准器和文本区域以及文本区域和按钮之间的空间后有不必要的空间时遇到一些问题.另外,我如何保持这种布局,但消除空间,并使底部3按钮更小.关于我正在做什么或如何做得更好的任何提示将非常感激.谢谢.

import javax.swing.*;
import java.awt.*;
public class calculator {
public static void main(String[] args) {
// creates the JFrame(a window with decorations)
JFrame frame = new JFrame("Calculator");
// stops the program when window is closed
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(377, 350);
// the main panel of the JFrame,
// remembet you cant add content directly to JFrame
JPanel content = new JPanel(new GridLayout(4, 0));
// panel for the text field
JPanel textarea = new JPanel(new GridLayout(4, 0));
// panel for the buttons,
// …Run Code Online (Sandbox Code Playgroud) 我正在构建一个计算器,并希望它自动将每个小数转换为分数.因此,如果用户计算答案为"0.333333 ..."的表达式,则返回"1/3".对于"0.25",它将返回"1/4".使用GCD,如此处所示(十进制到分数转换),我已经想出如何将任何有理的终止十进制转换为十进制,但这对任何重复的小数都不起作用(如.333333).
堆栈溢出的每个其他函数都在Objective-C中.但我需要一个快速应用程序中的功能!所以这个(/sf/answers/940116621/)的翻译版本会很棒!
关于如何将有理数或重复/无理小数转换为分数(即将"0.1764705882 ..."转换为3/17)的任何想法或解决方案都会很棒!
我正在寻找一个C++类,我可以将其纳入我正在进行的项目中.我需要的功能是将字符串操作评估为数字形式:例如"2 + 3*7"应评估为23.
我确实意识到我所要求的是一种翻译,并且有一些工具来构建它们,我在CS中的背景非常差,所以如果你能指出我已经准备好的课程,我将不胜感激.
我必须为我可以运行计算器的操作系统编写代码.它就像一个桌面计算器.为此,我正在阅读我已经完成第二阶段bootloader的breaknthorn操作开发系列引导加载程序处于实模式.在此之后,作者正在解释保护模式.我不想使用保护模式.我没有时间.所以我想通过使用bios中断在实模式下编写计算器.可能吗?我认为它可以写在引导程序的第二阶段(我不确定.)意味着我不必使用内核(我不确定).我不知道如何使用BIOS中断来处理键盘.任何人都可以给我一个链接来帮助我吗?如果我认为上面的任何错误是错误的,请纠正我.谢谢.
好的,我必须从文件中读取后缀表达式.后缀表达式必须具有空格以分隔每个运算符或操作数.到目前为止,只有在输入文件中的运算符或操作数之间没有空格时,我才能使用它.(即如果文件有12+,我得到的结果是3.)为了做到这一点,我认为我需要对输入进行标记化,但我不确定如何.这就是我到目前为止所拥有的.感谢您的回复.
import java.util.*;
import java.io.*;
public class PostfixCalc{
public static void main (String [] args) throws Exception {
File file = new File("in.txt");
Scanner sc = new Scanner(file);
String input = sc.next();
Stack<Integer> calc = new Stack<Integer>();
while(sc.hasNext()){
for(int i = 0; i < input.length(); i++){
char c = input.charAt(i);
int x = 0;
int y = 0;
int r = 0;
if(Character.isDigit(c)){
int t = Character.getNumericValue(c);
calc.push(t);
}
else if(c == '+'){
x = calc.pop();
y = calc.pop();
r …Run Code Online (Sandbox Code Playgroud) 通过使用我的意思是它在许多计算器如HP35-中使用
我的猜测(和混淆)是 -
可以问这个问题的另一种方式是后缀表示法优于前缀的优点是什么?
任何人都可以开导我吗?