比较前两个小数点

时间:2013-09-16 11:20:46

标签: java split decimal

假设我有3.13和4.13,我希望能够检查3.13中的.13和4.13中的.13。

我尝试了很多东西:

1)将两位小数转换为字符串并尝试将它们拆分为“。”,但我无法使其工作

2)a = 3.14; a = a - Math.floor(a);尝试单独获得小数但最终获得0.1400000001

4 个答案:

答案 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");
        } 
    }
}