假设如果我有 3.13 和 4.13,我希望能够检查 3.13 中的 0.13 和 4.13 中的 0.13。
我尝试了很多事情:
1)将两位小数转换为字符串并尝试用“。”将它们分开,但我无法让它工作
2)a = 3.14;
a = a - Math.floor(a);
尝试单独获得小数,但我最终得到 0.1400000001
将两位小数转换为字符串并尝试用“。”将它们分开,但我无法让它工作
split
使用正则表达式,因此您必须转义点。
string.split(".")
应该成为
string.split("\\.")
有了这个,您应该能够正确拆分字符串并进行比较
顺便说一句,我会使用Reimenus 解决方案,当你有数字时,如果可以的话,最好使用数学。仅当您确实需要它们时才使用字符串。
您可以将小数部分分开进行比较
double value1 = 3.13;
double value2 = 4.13;
double fractional1 = value1 - (long)value1;
double fractional2 = value2 - (long)value2;
System.out.println(Double.compare(fractional1, fractional2));
阅读每个计算机科学家都应该知道的关于浮点运算的知识,看看为什么你在自己的数值运算之后会看到额外的数字
你的第二种方法实际上是正确的。比较双值时,您必须包含一个范围。Java:双值比较(请参阅此)
试试这个
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
float v1 = 3.13f,v2 = 4.13f;
//Converting float value into String array
String split1[]=Float.toString(v1).split("\\.");
String split2[]=Float.toString(v2).split("\\.");
//Comparing two strings
if(split1[1].equals(split2[1]))
{
System.out.println("Yes");
}
}
}