假设我有3.13和4.13,我希望能够检查3.13中的.13和4.13中的.13。
我尝试了很多东西:
1)将两位小数转换为字符串并尝试将它们拆分为“。”,但我无法使其工作
2)a = 3.14;
a = a - Math.floor(a);
尝试单独获得小数但最终获得0.1400000001
答案 0 :(得分:2)
将两位小数转换为字符串并尝试将它们拆分为"。",但我无法使其工作
split
使用正则表达式,所以你必须逃避点。
string.split(".")
应该成为
string.split("\\.")
有了这个,您应该能够正确分割字符串并进行比较
顺便说一句,我会使用Reimenus solution,当你有数字时,如果可以,最好使用数学。只有在您真正需要时才使用字符串。
答案 1 :(得分:2)
您可以将小数部分分开以进行比较
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));
阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic也看到了 为什么你在自己的数字运算后看到了额外的数字
答案 2 :(得分:0)
你的第二种方法实际上是正确的。比较双值时,您必须包含范围.. Java: Double Value Comparison(请参阅此处)
答案 3 :(得分:0)
试试这个
/* 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");
}
}
}