Tag: math

在java中将double分成两部分“integer&fraction”的最佳方法是什么?

我试图通过以下方法分离5.6(例如): private static double[] method(double d) { int integerPart = 0; double fractionPart = 0.0; integerPart = (int) d; fractionPart = d – integerPart; return new double[]{integerPart, fractionPart}; } 但我得到的是: [0] = 5.0 [1] = 0.5999999999999996 如果不将数字转换为字符串,您对此有何建议?

如何获取小数点后的数字? (java)

double d = 4.321562; 有没有一种简单的方法从d中提取0.321562? 我试着看数学课,但没有运气。 如果这可以在不转换为字符串或转换为其他任何内容的情况下完成,甚至更好。

解释两个数字的安全平均值

每当我需要为二进制搜索等算法平均两个数字时,我总是这样做: int mid = low + ((high – low) / 2); 我最近在这篇文章中看到了另一种方法,但我不明白。 它说你可以用Java做到这一点: int mid = (low + high) >>> 1; 或者在C ++中: int mid = ((unsigned int)low + (unsigned int)high)) >> 1; C ++版本实质上使两个操作数都无符号,因此执行移位会导致算术移位而不是有符号移位。 我理解这两段代码正在做什么,但这如何解决溢出问题? 我认为整个问题是中间值high + low可能溢出? 编辑: 哦,呃。 所有答案都没有完全回答我的问题,但是@John Zeringue的答案让它点击了。 我会试着在这里解释一下。 Java中的(high + low)/2问题并不完全是high + low溢出(它会溢出,因为整数都是有符号的,但所有的位仍然存在,并且没有信息丢失)。 像这样取平均值的问题是分裂。 该部门以签名值运作,因此您的结果将为负数。 相反,使用移位将除以2但考虑位而不是符号(有效地将其视为无符号)。

在Java中生成唯一double值的最有效方法是什么

有一些方法,如搜索重复项,但我想知道是否有更好的解决方案来完成这项任务。

给定整数集的子集,其和为常数N:Java

给定一组整数,如何找到一个总和为给定值的子集……子集问题? 示例:S = {1,2,4,3,2,5}且n = 7查找和为n的可能子集。 我试图谷歌发现很多链接,但不清楚。 我们如何在java中解决这个问题,使用什么数据结构及其复杂性?

又一个KeyListener / KeyBinding问题

唉,我很抱歉MadProgrammer,但我无法让KeyBinding以我想要的方式工作:(。但是我会继续看一些教程,直到我弄明白。现在虽然我已经卡住了到了一个KeyListener并且它可以正常工作。但是现在我遇到了一个问题,其中p.move();实际上没有移动播放器。除了p.move()之外,我放入的所有其他代码都工作正常。我可能不应该问这么多问题,所以如果你想让我停下来就这么说,但整个SO社区真的很好。再次,我会发布代码。 主要课程: import javax.swing.*; public class Game extends JFrame{ public static void main(String[] args){ new Game(); } public Game(){ add(new Board()); setTitle(“Hi mom”); setSize(555,330); setResizable(false); setLocationRelativeTo(null); setDefaultCloseOperation(3); setVisible(true); } } 董事会成员: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Board extends JPanel implements ActionListener { Image background; Player p; boolean moving; public Board() { setFocusable(true); […]

在Java中双重算术得到错误答案

可能重复: 双重计算产生奇数结果 我正在用Java编写一个处理大量双算术的程序。 我最终到了需要添加0.6666666666666666和-0.666666666666667的地步。 但是,我得到的答案是-3.3306690738754696E-16。 换一种说法, double d1 = 0.6666666666666666; double d2 = -0.666666666666667; System.out.println(d1 + d2); 打印出“-3.3306690738754696E-16”。 为什么会这样? 先感谢您。

导入Math.PI作为参考或值

我正在准备Java的基本认证。 我对一个我正确的问题(!)的答案感到有些困惑: – 鉴于: public class Circle { static double getCircumference(double radius ) { return PI * 2 * radius; } public static double getArea(double radius) { return PI * radius * radius; } } 哪个import语句将使代码能够编译和运行? import java.lang.*; import static java.lang.Math.PI; import java.lang.Math.*; import java.lang.Math; 我回答了import static java.lang.Math.PI; 但下面两个其他选项的解释让我困惑: – 语句导入java.lang.Math; 并导入java.lang.Math。*; 不会启用代码编译和运行。 这些import语句只允许Math.PI作为PI常量的引用。 我的问题是:导入语句只允许引用PI常量会出现什么问题? […]

Math.pow在重复调用时会产生不同的结果

升级到Java 1.8.0_20后,我们的测试系统报告了错误,但代码没有更改。 我发现,使用完全相同的输入参数调用的Math.pow()调用时会产生不同的结果。 在Java 1.8.0_11中,它的行为与预期的一样,并且总是返回相同的值,但是对于Java 1.8.0_20及更高版本,它有时会返回稍微不同的值。 这类似于Math.pow根据java版本产生不同结果的问题,但不同,因为pow()的结果在一个VM中不同。 在Java 1.8.0_20及更高版本下运行时,以下JUint测试失败 import static org.junit.Assert.assertEquals; import java.util.function.BiFunction; import org.junit.BeforeClass; import org.junit.Test; public class PowerTest { private static final int N = 1000000; private static final double base = 5350.456329377186; private static final double exp = 2.0; private static double eval(final BiFunction f) { return f.apply(base, exp); } private […]

生成唯一ID,最大长度为3位/字母/符号

我有一个75200字的清单。 我需要为每个单词赋予一个“唯一”id,每个id的长度可以是3个字母或更少。 我可以使用数字,字母甚至符号,但最大长度为3。 以下是我的代码。 import java.io.*; import java.util.*; public class HashCreator { private Map completedWordMap; private String [] simpleLetters = {“a”,”b”,”c”,”d”,”e”,”f”,”g”,”h”,”i”,”j”,”k”,”l”,”m”,”n”,”o”,”p”,”q”,”r”,”s”,”t”,”u”,”v”,”w”,”x”,”y”,”z”}; private String[] symbols = {“!”,”@”,”#”,”$”,”%”,”^”,”&”,”*”,”~”,”?”}; private String indexNumber; String currentlyUsingLetter, currentlyUsingSymbol; private int currentlyActiveSimpleLetter = 0, currentlyActiveSymbol = 0, currentlyActiveSimpleLetter2 = 0, currentlyActiveSymbol2 = 0; private boolean secondaryNumberIsHundred = false; public HashCreator() { completedWordMap […]