2013-09-16 3 views
1

Предположим, что если у меня есть 3.13 и 4.13, я хочу, чтобы иметь возможность проверить .13 из 3.13 и .13 из 4.13.Сравните первые две десятичные точки

Я попробовал много вещей: «»

1) превращение двух знаков после запятой в строки и пытается разделить их на, но я не смог получить, чтобы работать

2) a = 3.14; a = a - Math.floor(a);, чтобы попытаться получить одна десятичная, но я в конечном итоге получить 0,1400000001

+1

_converting двух знаков после запятой в строки и пытается разделить их на «», но я не удалось получить это для работы_ **: ** 'split' использует регулярное выражение, поэтому вам нужно избежать точки. 'string.split (". ")' должен стать 'string.split (" \\. ")', попробуйте и дайте мне знать, если он работает – BackSlash

+0

@BackSlash, спасибо. он работает: D – Elmer

+0

Сделал ответ :) – BackSlash

ответ

2

преобразование двух знаков после запятой в строки и пытается разделить их на «», но я не смог получить, чтобы работать

split использует регулярное выражение, поэтому вам нужно избежать точки.

string.split(".") 

должен стать

string.split("\\.") 

С этим вы должны быть в состоянии разделить строку правильно и делать Сравнения


Кстати, я хотел бы использовать Reimenus solution, когда у вас есть номера всегда лучше использовать математику, если сможете. Используйте строки , только если они вам действительно нужны.

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 тоже посмотреть почему вы видите дополнительные цифры после собственной числовой операции

+0

+1! Использование строковых операций для чисел - это то, что мне не нравится. Когда вы играете с цифрами, всегда делайте MATH! – SudoRahul

0

вашего второго метода на самом деле правильно. при сравнении двойных значений, вы должны включать в себя диапазон .. Java: Double Value Comparison (см это)

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"); 
     } 
    } 
} 
Смежные вопросы