gpt4 book ai didi

java - 简单的Java计算器(需要小数帮助)

转载 作者:行者123 更新时间:2023-12-01 17:03:24 27 4
gpt4 key购买 nike

好吧,这是我的简单 java 计算器,一切正常,我只需要允许小数的帮助。非常感谢帮助我的人,这是一个学校项目,所以我需要很快得到答案:)

import java.util.Scanner;

public class javaProject

{

public static void main(String[] args)
{
int x;
int y;
String whatOp;

Scanner input = new Scanner(System.in);

System.out.println("please enter the first number");
x = input.nextInt();

System.out.println("please enter the second number");
y = input.nextInt();

Scanner op = new Scanner(System.in);

System.out.println("Please enter the operation you want to use");
whatOp = op.next();

if (whatOp.equals("+"))
{
System.out.println("The answer is " + (x + y));
}
else if (whatOp.equals("-"))
{
System.out.println("The answer is " + (x - y));
}
else if (whatOp.equals("*"))
{
System.out.println("The answer is " + (x * y));
}
else if (whatOp.equals("/"))
{
System.out.println("The answer is " + (x / y));
}
else
{
System.out.println("Thats not a choice!");
}
}
}

最佳答案

注意! floatdouble 与计算器一起使用时可能会让人心碎。这些类型不适用于纳税或平衡支票簿。为什么?因为他们不像你我那样使用 10 位数字。他们使用二进制数字。对于整数,没有问题,但是对于分数,你会遇到很难看到的问题,因为 java 以 10 为基数接受它们,以 10 为基数显示它们,但它不会以 10 为基数存储它们。

这可能会让人很难意识到 floatdouble 中不存在 0.1 这样的东西。完美地表达它是不可能的,就像我们以 10 为基数的 π 一样。当你把它拉出来时,由于四舍五入,它可能会以这种方式显示,但这不是存储的内容,也不是你的内容。将进行计算。这就是计算器不使用 IEEE float 和 double 的原因。这些类型旨在与科学仪器一起使用,以在精度限制范围内进行测量和计算。如果您正在为小学中使用的计算器建模,请注意,由于这个原因,这些计算器不使用 IEEE float 或 double 。

有关此问题的更多信息 read thisthis

相反,一些非常聪明的人创建了一些非常适合计算器建模的东西:java.math.BigDecimal;

如果您是视觉类型,让我向您展示一些可能会导致 BigDecimal 与 float 和 double clear 之间差异的内容:

Inch rulers

这些标尺都显示英寸。对于整英寸来说,它们之间没有区别。然而,它们划分英寸的方式不同。最上面的那个除以 10。最下面的一个除以 2。 BigDecimal 可以完美地模拟顶部。底部可以通过 float 或 double 完美建模。有些刻度线会像 0.5 一样排列,因为 5/10 = 1/2 但 1/10 = x/(2^n) 没有 x 和 n 为整数的解。

由于人类有着在计算器中使用十进制数字的悠久传统,因此我不建议让 float 或 double 靠近您的会计师。

import java.math.BigDecimal;
import java.util.Scanner;

public class javaProject
{

public static void main(String[] args)
{
BigDecimal x;
BigDecimal y;
String whatOp;


Scanner input = new Scanner(System.in);

System.out.println("please enter the first number");
x = input.nextBigDecimal();

System.out.println("please enter the second number");
y = input.nextBigDecimal();

Scanner op = new Scanner(System.in);

System.out.println("Please enter the operation you want to use");
whatOp = op.next();

if (whatOp.equals("+"))
{
System.out.println( "The answer is " + ( x.add(y) ) );
}
else if (whatOp.equals("-"))
{
System.out.println( "The answer is " + ( x.subtract(y) ) );
}
else if (whatOp.equals("*"))
{
System.out.println( "The answer is " + ( x.multiply(y) ) );
}
else if (whatOp.equals("/"))
{
System.out.println( "The answer is " + ( x.divide(y) ) );
}
else
{
System.out.println("Thats not a choice!");
}
}
}

关于java - 简单的Java计算器(需要小数帮助),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569859/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com