2015-09-21 1 views
0

Double::sum est une référence de méthode pour ajouter des doubles, c.-à-d. (a,b) -> a+b.Existe-t-il une référence de méthode dans JDK pour soustraire des doubles?

Pourquoi n'y a-t-il pas de référence de méthode pour moins dans le JDK? C'est à dire. (a,b) -> a-b?

+2

En utilisant une bibliothèque pour cela est contre-productif, vous avez déjà passé plus de temps à écrire cette question que le code que vous savez déjà et fonctionne est assez simple. – Tunaki

+0

https://functionaljava.googlecode.com/svn/artifacts/3.0/javadoc/fj/function/Integers.html mais pas moi-même utilisé –

+4

'Double :: sum' est une référence de méthode pratique pour les opérations de réduction et similaire. Puisque minus n'est pas associatif, il n'est pas approprié pour de telles opérations. Cependant, si vous avez besoin d'un moins, utilisez simplement '(a, b) -> a-b'. L'ajout d'une dépendance de la troisième bibliothèque pour cela semble fou. – Holger

Répondre

9

L'objectif principal des méthodes telles que Double.sum est d'aider les cas d'utilisation comme la réduction ou Arrays.parallelPrefix Depuis moins n'est pas une fonction associative, il ne convient pas à ce cas d'utilisation. L'ajout de dépendances de bibliothèques tierces uniquement dans l'intérêt d'une méthode aussi simple n'est pas recommandé. Gardez à l'esprit que vous pouvez toujours créer votre propre méthode si vous préférez les méthodes nommées aux expressions lambda.

Par ex

static double minus(double a, double b) { 
    return a-b; 
} 

et l'utilisation MyClass::minus est aussi informatif que ThirdPartyClass::minus ...

2

Il n'existe pas de méthode intégrée. Mais je ne pense pas, itdo toute autre magie que de simplement faire

double result = a-b; 

Il semble que vous êtes sur la pensée ici :)

0

En tant que tel il n'y a pas de méthode intégrée qui est utilisée pour soustraire les doubles. Toutefois, si vous utilisez BigDecimal pour stocker les décimales, vous pouvez essayer ceci:

BigDecimal a = new BigDecimal("10.6"); 
BigDecimal b = new BigDecimal("4.3"); 
BigDecimal result = a.subtract(b); 
System.out.println(result); 

que vous pouvez utiliser la manière simple de soustraire deux nombres à savoir, a-b. A noter également que Java, doubles valeurs sont IEEE floating point numbers