Compruebe si un doble = 1/3

Debe permitir un cierto error y no todas las fracciones pueden representarse exactamente como valores escalares.

public static String toFraction(double d, double err) {
    String s = Long.toString((long) d);
    d -= (long) d;
    if (d > err) {
        for (int den = 2, max = (int) (1 / err); den < max; den++) {
            long num = Math.round(d * den);
            double d2 = (double) num / den;
            if (Math.abs(d - d2) <= err)
                return (s.equals("0") ? "" : s + " ") + num +"/"+den;
        }
    }
    return s;
}

public static void main(String... args) {
    System.out.println(toFraction(1.0/3, 1e-6));
    System.out.println(toFraction(1.23456789, 1e-6));
    System.out.println(toFraction(Math.E, 1e-6));
    System.out.println(toFraction(Math.PI, 1e-6));
    for (double d = 10; d < 1e15; d *= 10)
        System.out.println(toFraction(Math.PI, 1.0 / d));
}

huellas dactilares

1/3
1 19/81
2 719/1001
3 16/113
3 1/5
3 1/7
3 9/64
3 15/106
3 16/113
3 16/113
3 3423/24175
3 4543/32085
3 4687/33102
3 14093/99532
3 37576/265381
3 192583/1360120
3 244252/1725033
3 2635103/18610450

Nota: esto encuentra las aproximaciones 21/7, 333/106 y 355/113 para PI.

Respuesta 1

Ningún doublevalor es igual a un tercio, por lo que la única forma en que se puede imprimir su programa 1/3es si cambia la especificación del método para favorecer respuestas "buenas" en lugar de la respuesta que es técnicamente correcta.

Una cosa que podría hacer es elegir un denominador máximo para las respuestas, digamos 100, y devolver la fracción más cercana con el denominador 100 o menos.

A continuación, le mostramos cómo podría implementar esto utilizando secuencias de Java 8:

public static String toFraction(double val) {
    int b = IntStream.rangeClosed(1, 100)
                     .boxed()
                     .min(Comparator.comparingDouble(n -> Math.abs(val * n - Math.round(val * n))))
                     .get();
    int a = (int) Math.round(val * b);
    int h = gcm(a, b);
    return a/h + "/" + b/h;
}

No hay un buen enfoque para esto. doubleNo es muy bueno para este tipo de cosas. Tenga en cuenta que BigDecimaltampoco puede representar 1/3, por lo que tendrá el mismo problema con esa clase.

Respuesta: 2

Estoy empezando con Java, así que estoy transcribiendo algunas de mis cosas de Ruby. Tengo una función Ruby como esta, que genera algo que se parece a una dirección IPv6: def generate_ip () list = ["a", ...

He configurado y ejecuto tomcat. Luego fui a URL: http: // localhost: 8080 / manager / html ingresé "admin" como nombre de usuario y contraseña, que se había configurado antes. Entonces, después de eso, puedo ver al gerente de Tomcat, ...

He comprobado el enlace: informe de problemas de sonarqube, pero no está claro cómo lograrlo durante la construcción de Maven.

Me gustaría ejecutar una consulta JPA (eclipselink) como: seleccione t desde SomeEntity t donde t.branch.id en: branchList y pase una colección como branchList. La pregunta es ¿cuál es el límite de tamaño de la colección?