【问题标题】:Meaning of the asterisk symbol in Java [closed]Java中星号符号的含义[关闭]
【发布时间】:2013-08-01 18:31:36
【问题描述】:

在Java中是否可以改变星号符号(乘法运算符)的含义?

我想这样做:

int ex = 600 * 0.98;

它失败了,因为你不能从 double 转换为 int。我可以这样做,以便我能够将双精度转换为整数吗?还是 星号只有一个不能改变的意思?

【问题讨论】:

  • 你为什么要这么做?
  • 您想将* 存储在一个变量中并使用它吗?如果是,你到底为什么要这样做?
  • 什么意思?整数只是数字。它们不能有星号。
  • 在这种情况下,乘法是* 唯一可能的含义。
  • 您的问题令人困惑。你能解释一下你想要完成什么吗?

标签: java variables


【解决方案1】:

我只想要数学中的操作,而不是字符串。

要进行操作,您必须有代码。一种方法是使用类似

的方法
public static double ex(double factor) {
    return factor * 0.98;
}

或者如果因子是一个字段

private double factor = 600;

public double ex() {
    return factor * 98 / 100;
}

public static void main(String... ignored)  {
    Main m = new Main();
    System.out.println("factor: "+m.factor+" ex: "+ m.ex());
    m.factor = 700;
    System.out.println("factor: "+m.factor+" ex: "+ m.ex());
}

打印

factor: 600.0 ex: 588.0
factor: 700.0 ex: 686.0

如您所见,ex() 每次使用时都会重新评估。

我为什么要* 98 / 100?我这样做是因为每个值都可以准确表示,但是 0.98 不能准确表示并且可能有一个小错误。

System.out.println(new BigDecimal(0.98));

打印最接近 0.98 的可表示值

0.979999999999999982236431605997495353221893310546875

如果你想存储文本,你需要做类似的事情

String ex = "600 * 0.98";

int 值用于存储一个整数,它是一个 32 位有符号值,仅此而已。

【讨论】:

  • 我的意思是如果如何在真正的数学中使用星号,而不是单词,我的问题是如何进行星号操作。
  • @Mattcejpa 真的不清楚你想要什么。考虑到在问题中您说您不想要乘法,您所说的“星号运算”是什么意思?变量ex 应该包含什么结果?
  • @Juhana 我想在我的游戏中出现摩擦,所以如果我有一个变量星号 0.98 它将进行整理操作。在数学课上,他们有 100 * 1 之类的问题。我只想要数学中的操作,而不是字符串。
  • @Mattcejpa:如果你只想要计算而不是结果,那么anything * anything else 将不起作用。您需要一个包含执行计算并返回结果的函数的对象。没有办法重新定义 * 来做除了它所做的事情之外的其他事情——它所做的事情就是当场将两个数字相乘。
  • @Mattcejpa 请参阅上面的更新答案。变量具有固定值,但方法可以根据公式每次使用时返回不同的值。
【解决方案2】:

嗯。

简短的回答是你不能这样做。 int 类型的变量只能存储整数值。您分配给 int 的表达式必须计算为整数。

你想给 ex 分配什么整数值?

int ex = 588;  // 600 * 0.98

你将两个非乘法的数值之间的星号关联起来是什么意思?

如果你想存储一个字符数组,那么:

char[] ex = "600 * 0.98".toCharArray();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2011-01-26
    • 2021-10-29
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    相关资源
    最近更新 更多