Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

che arrotondamento fa?

17 views
Skip to first unread message

Annibale

unread,
Oct 5, 2019, 8:59:20 AM10/5/19
to
float x = (float) 23123.456;

ottengo:
x=23123.455

ma usa sempre i millesimi!
Perchè allora non scrive 23123.456 ?

Se arrotonda dovrebbe stampare solo fino ai centesimi :
23123.45

Grazie

4ndre4

unread,
Oct 5, 2019, 11:38:49 AM10/5/19
to

Dr.UgoGagliardelli

unread,
Oct 6, 2019, 4:22:31 AM10/6/19
to
Piu' che di arrotondamento, secondo me e' un troncamento. Un float e' un
IEEE 754 single-precision floating-point la cui precisione e' di circa
circa 7 digit.

Annibale

unread,
Oct 8, 2019, 3:05:11 PM10/8/19
to
sapresti tradurre in java questo codice?
Vorrei fare delle prove.
Grazie



#include <stdio.h>
#include <stdlib.h>

void print_double_bytes(double d) {
unsigned char *p = (unsigned char*)&d;
for (size_t i=0; i<sizeof d; i++) {
printf("%.2x", p[i]);
}
printf("\n");
}

int main() {
double a = 1.1;
double b = 2.2;
double c = 3.3;

print_double_bytes(a);
print_double_bytes(b);
print_double_bytes(a+b);
print_double_bytes(c);

return 0;
}

Dr.UgoGagliardelli

unread,
Oct 9, 2019, 1:46:50 AM10/9/19
to
Il 08.10.2019 21.05, Annibale ha scritto:
[...]
> sapresti tradurre in java questo codice?
> Vorrei fare delle prove.
> Grazie
>
>
>
> #include <stdio.h>
> #include <stdlib.h>
>
> void print_double_bytes(double d) {
>   unsigned char *p = (unsigned char*)&d;
>   for (size_t i=0; i<sizeof d; i++) {
>     printf("%.2x", p[i]);
>   }
>   printf("\n");
> }
>
> int main() {
>     double a = 1.1;
>     double b = 2.2;
>     double c = 3.3;
>
>     print_double_bytes(a);
>     print_double_bytes(b);
>     print_double_bytes(a+b);
>     print_double_bytes(c);
>
>     return 0;
> }
public static void main(String[] args) {
double ds[] = 1.1, 2.2, 3.3;
for (double d: ds)
System.out.println(Double.toHexString(d));
oppure
for (double d: ds)
System.out.println(Long.toHexString(Double.doubleToRawLongBits(d)));
}

Annibale

unread,
Oct 9, 2019, 7:15:16 PM10/9/19
to
Il 09/10/2019 07:45, Dr.UgoGagliardelli ha scritto:

>  for (double d: ds)
>    System.out.println(Double.toHexString(d));

bene, già dal nome del metodo ho capito molto di piu'!
0 new messages