ืฉืืื! ืืืจืฆืื ืฉื ืืืื ื ืืืจ ืขื ืืกืคืจืื ืื'ืืืื, ืืืืืคื ืกืคืฆืืคื ืขื ืืกืคืจืื ืืืฉืืื. ืื ืืืืืื! :) ืื ืืืื ืงืฉืืื ืืชืืืืื ืืืจืฆืื. ื ืืืจ ืขื ืืกืคืจืื ืืืืชืืื ืื ืืจืง ืื ืงืืืช ืืืื ื"ืืชืื ืช" ืฉืื ื. ืื ืื ืื "ืืกืคืจืื ืืืืชืืื"? ืืกืคืจืื ืืืฉืืื ืื ืืกืคืจืื ืฉืืฉ ืืื ืืืง ืืืงื (ืฉืืืื ืืืืืช ืืคืก). ืื ืืืืืื ืืืืืช ืืืืืืื ืื ืฉืืืืืื. ืื ื ืืื ืืืืืืืช: 15 56.22 0.0 1242342343445246 -232336.11 ืืื ืขืืื ืืกืคืจ ืืืฉื? ืื ืคืฉืื: ืืื ืืืจืื ืืืืง ืฉืื, ืืืง ืฉืืจ ืืกืืื. ืขืืืจ ืืกืคืจืื ืืืืืืื ืืกืืื ืืืจื ืืื ืืื ื ืืฆืืื ืืืคืืจืฉ, ืื ืขืืืจ ืืกืคืจืื ืฉืืืืืื ืืื ืืฆืืื. ืืขืืจ, ืืืงื ื ืืคืืจืื ืืืื ืคืขืืืืช ืขื ืืกืคืจืื ื ืืชื ืืืฆืข ืื'ืืืื. ืืื ืืื ืืื ืืจืื ืคืขืืืืช ืืชืืืืืช ืกืื ืืจืืืืช - ืืืืืจ, ืืืกืืจ ืืื'. ืืื ืื ืืื ืืืฉืืช ืขืืืจื: ืืืฉื, ืฉืืจ ืืืืืงื. ืืื ืืื ืืืืืง ืขืืืืช ืขืืืื ืขื ืืกืคืจืื ืืชืื ืืืฉื? ืืืืื ืฆืืจื ืื ืืืืืกื ืื ืืืืืจืื?
ืืืื ื ืืืจ ืขื ืฉื ื ืืกืืืื ืืืืจืื ืื -
ืืืกืื ืืกืคืจืื ืืืืชืืื ืืืืืจืื
ืื ื ืืืฉื ืฉืื ืื ืืืื ืชืืืืช ืขืืืจื ืฉืืกืคืจืื ืืืืืื ืืืืืช ืืืืืื ืืงืื ืื :) ืืคืฉืจ ืืืฉืืืช ืืืชื ืืื ืขื ืืฉื ื. ืืืืืื, ืืืกืคืจ 100 ืงืื ืืืืกืคืจ 423324. ืืื ืื ืืฉืคืืข ืขื ืคืขืืืช ืืืืฉื ืืืชืืื ืืช ืฉืื ื? ืืืืช ืฉืื . ืื ืืกืคืจ ืืืืฆื ื-Java ืขื ืืื ืืืื ืกืคืฆืืคื ืฉื ืขืจืืื :ืกืึผื | ืืืื ืืืืจืื (ืกืืืืืช) | ืืืื ืขืจืืื |
---|---|---|
byte |
8 ืืื | -128 ืขื 127 |
short |
16 ืืื | -32768 ืขื 32767 |
char |
16 ืืื | ืืกืคืจ ืฉืื ืืื ืกืืื ืืืืืฆื ืชื UTF-16 (ืืืชืืืช ืืืกืคืจืื) |
int |
32 ืืืืื | ื-2147483648 ื-2147483647 |
long |
64 ืืืืื | ื-9223372036854775808 ื-9223372036854775807 |
float |
32 ืืืืื | ื-2 -149 ืขื (2-2 -23 )*2 127 |
double |
64 ืืืืื | ื-2 -1074 ืขื (2-2 -52 )*2 1023 |
float
ื double
. ืฉื ืืื ืืืฆืขืื ืืช ืืืชื ืืฉืืื - ืืืืฆืืื ืืกืคืจืื ืฉืืจืื. ืื ืื ื ืงืจืืื ืืขืชืื ืงืจืืืืช ืืืื " ืืกืคืจื ื ืงืืื ืฆืคื" . ืืืืจ ืืช ืืืื ื ืืื ืืขืชืื :) ืืืืืื, ืืืกืคืจ 2.3333 ืื 134.1212121212. ืื ืืืืจ. ืืจื ืืกืชืืจ ืฉืืื ืืืื ืืื ืฉื ื ืืกืืืื ืืืื, ืืืืจ ืฉืื ืืืฆืขืื ืืช ืืืชื ืืฉืืื? ืืื ืืฉ ืืืื. ืฉืืื ืื ืืขืืืื "ืืืื ืืืืืจืื" ืืืืื ืืืขืื. ืื ืืืกืคืจืื (ืืื ืจืง ืืกืคืจืื - ืื ืืืืืข ืืืืคื ืืืื) ื ืฉืืจืื ืืืืืจืื ืืืืฉื ืืฆืืจื ืฉื ืืืืื. ืืขื ืืื ืืืืืช ืืืืืข ืืงืื ื ืืืืชืจ. ืื ืื ืคืฉืื. ืื ืกืืืืืช ืฉืืื ื-0 ืื ื-1. ืืืืืื " bit " ืขืฆืื ืืื ืืืื ืืืืช " ืกืคืจื ืืื ืืจืืช " - ืืกืคืจ ืืื ืืจื. ืื ื ืืืฉื ืฉืืื ืฉืืขืชื ืขื ืงืืืื ืฉื ืืขืจืืช ืืืกืคืจืื ืืืื ืืจืืช ืืืชืืืืงื. ืื ืืกืคืจ ืขืฉืจืื ื ืฉืื ื ืืืืจืื ืืืื ืืืืืช ืืืืฆื ืืงืืืฆื ืฉื ืืืืื ืืืคืกืื. ืืืืืื, ืืืกืคืจ 584.32 ืืืื ืืจื ืืืจืื ืื: 100100100001010001111 . ืื ืืื ืืืคืก ืืืกืคืจ ืื ืืื ืืื ื ืคืจื. ืืขืช ืืชื ืืืืจ ืืืืืช ืืจืืจ ืืืชืจ ืืืื ืืืืื ืืื ืกืืื ืื ืชืื ืื. ืืืืืื, ืื ื ืืฆืืจ ืืกืคืจ ืกืืืื float
, ืืฉ ืื ื ืจืง 32 ืกืืืืืช ืืจืฉืืชื ื. ืืฉืืืฆืจืื ืืกืคืจ, float
ืื ืืืืืง ืืื ืืงืื ืืืงืฆื ืื ืืืืืจืื ืืืืฉื. ืื ื ืจืฆื ืืืฆืืจ ืืช ืืืกืคืจ 123456789.65656565656565, ืืืื ืืจื ืื ืืืจืื ืื: 111010110111100111010001010110101000000 . ืืื ืืืจืื ื-38 ืืืืืช ืืืคืกืื, ืืืืืจ, ืืฉ ืฆืืจื ื-38 ืกืืืืืช ืืื ืืืืกื ืืืชื ืืืืืจืื. float
ืืืกืคืจ ืืื ืคืฉืื ืื "ืืชืืื" ืืกืื ! ืืื, ื ืืชื ืืืืฆื ืืช ืืืกืคืจ 123456789 ืืกืื double
. ืืืืกื ืืืชื ืืืงืฆืื ืขื 64 ืืืืื: ืื ืืชืืื ืื ื! ืืืืื ืฉืื ืืืื ืืขืจืืื ืืชืืื. ืืืขืื ื ืืืืช, ืืชื ืืืื ืืืฉืื ืขื ืืกืคืจ ืืงืืคืกื ืงืื ื ืขื ืชืืื. ืื ืืฉ ืืกืคืืง ืชืืื ืืืืกืื ืื ืืื, ืื ืกืื ืื ืชืื ืื ื ืืืจ ื ืืื :) ืืืืื, ืืืืืืช ืฉืื ืืช ืฉื ืืืืจืื ืฉืืืงืฆื ืืฉืคืืขืืช ืื ืขื ืืืกืคืจ ืขืฆืื. ืฉืืื ืื ืฉืืกืืืื float
ืืฉ double
ืืืืื ืขืจืืื ืฉืื ืื. ืื ืื ืืืืจ ืืคืืขื? ืืกืคืจ double
ืืืื ืืืื ืืืืง ืืืื ืืืชืจ ืืืกืคืจ float
. ืืืกืคืจื ื ืงืืื ืฆืคื ืฉื 32 ืกืืืืืช (ื-Java ืื ืืืืืง ืืกืื float
) ืืฉ ืืืืง ืฉื ื-24 ืกืืืืืช, ืืืืืจ ืืขืจื 7 ืืงืืืืช ืขืฉืจืื ืืื. ืืืืกืคืจืื ืฉื 64 ืกืืืืืช (ื-Java ืื ืืกืื double
) ืืฉ ืืืืง ืฉื ื-53 ืกืืืืืช, ืืืืืจ ื-16 ืืงืืืืช ืขืฉืจืื ืืื. ืื ื ืืืืื ืฉืืืืืื ืืืื ืืช ืืืืื ืืื:
public class Main {
public static void main(String[] args) {
float f = 0.0f;
for (int i=1; i <= 7; i++) {
f += 0.1111111111111111;
}
System.out.println(f);
}
}
ืื ืื ืื ื ืฆืจืืืื ืืงืื ืืื ืืชืืฆืื ืืื? ื ืจืื ืฉืืื ืื ืคืฉืื. ืืฉ ืื ื ืืช ืืืกืคืจ 0.0, ืืื ื ืืืกืืคืื ืื 0.1111111111111111 7 ืคืขืืื ืืจืฆืืคืืช. ืืชืืฆืื ืฆืจืืื ืืืืืช 0.77777777777777777. ืืื ืืฆืจื ื ืืกืคืจ float
. ืืืืื ืืืืื ื-32 ืกืืืืืช, ืืืคื ืฉืืืจื ื ืงืืื, ืืื ืืกืืื ืืืฆืื ืืกืคืจ ืขื ืืขืจื ื-7 ืืขืฉืจืื ื. ืืื, ืืกืืคื ืฉื ืืืจ, ืืชืืฆืื ืฉื ืงืื ืืงืื ืกืืื ืชืืื ืฉืื ื ืืื ืฉืฆืืคืื ื:
0.7777778
ื ืจืื ืืื ืฉืืืกืคืจ "ื ืืชื". ืืชื ืืืจ ืืืืข ืืื ื ืชืื ืื ืืืืืกื ืื ืืืืืจืื - ืืฆืืจื ืฉื ืืืืื, ืื ืื ืื ืืืืจ ืืืคืชืืข ืืืชื. ืืจืืจ ืืื ืื ืงืจื: ืืชืืฆืื 0.77777777777777777 ืคืฉืื ืื ืืชืืืื ื-32 ืืกืืืืืช ืฉืืืงืฆื ืื ื, ืื ืืื ื ืงืืขื ืืื ืืืฉืชืื ืืืฉืชื ื ืืืืคืืก float
:) ืื ืื ื ืืืืืื ืืฉื ืืช ืืช ืกืื ืืืฉืชื ื ื- double
ืืืืืื ืฉืื ื, ืืืืืจ ืืื ืืช ืืกืืคื ืืชืืฆืื ืื ืชืงืืฆืจ:
public class Main {
public static void main(String[] args) {
double f = 0.0;
for (int i=1; i <= 7; i++) {
f += 0.1111111111111111;
}
System.out.println(f);
}
}
0.7777777777777779
ืืฉ ืืืจ 16 ืืงืืืืช ืขืฉืจืื ืืื, ืืชืืฆืื "ืืชืืืื" ื-64 ืกืืืืืช. ืืื, ืืืื ืฉืืชื ืื ืฉืืฉื ื ืืืงืจืื ืืชืืฆืืืช ืื ืืื ืืืืจื ื ืืื ืืช? ืืืืฉืื ื ืขืฉื ืืฉืืืืืช ืงืืืช. ืขื ืืกืืืืช ืืื ื ืืืจ ืืืื :) ืขืืฉืื ืืืื ื ืืื ืืื ืืืืื ืขื ืืื ืืคืฉืจ ืืืฉืืืช ืืกืคืจืื ืื ืขื ืื.
ืืฉืืืื ืฉื ืืกืคืจืื ืืืฉืืื
ืืืงืืช ืืืจ ื ืืขื ื ืื ืืฉื ืืื ืืืจืฆืื ืืืืจืื ื, ืืฉืืืืจื ื ืขื ืคืขืืืืช ืืฉืืืื. ืื ื ื ืชื ืืืืฉ ืคืขืืืืช ืืืื>
, <
, >=
. <=
ืืื ื ืกืชืื ืืืงืื ืืืช ืขื ืืืืื ืืขื ืืื ืช ืืืชืจ:
public class Main {
public static void main(String[] args) {
double f = 0.0;
for (int i=1; i <= 10; i++) {
f += 0.1;
}
System.out.println(f);
}
}
ืืืื ืืกืคืจ ืืืขืชื ืืืฆื ืขื ืืืกื? ืืชืฉืืื ืืืืืื ืืช ืชืืื ืืชืฉืืื: ืืืกืคืจ 1. ืื ืื ื ืืชืืืืื ืืกืคืืจ ืืืืกืคืจ 0.0 ืืืืกืืคืื ืื ืืจืฆืืคืืช 0.1 ืขืฉืจ ืคืขืืื ืืจืฆืืคืืช. ืืื ื ืจืื ื ืืื, ืื ืฆืจืื ืืืืืช ืืื. ื ืกื ืืืจืืฅ ืืช ืืงืื ืืื, ืืืชืฉืืื ืชืคืชืืข ืืืชื ืืืื :) ืคืื ืืกืืฃ:
0.9999999999999999
ืืื ืืืืข ืืืจืขื ืฉืืืื ืืืืืื ืื ืื ืคืฉืืื? O_o ืืื ืืคืืื ืชืืืื ืืืชื ื' ืืืื ืืขื ืืช ื ืืื ืืงืืืช, ืืื ืชืืื ืืช Java ืื ืืื ืชืืฆืื ืื ืืืืืงืช. "ืื ืืืืืง" ืืื ืืืื ืืืื ืืืชืจ ืืื ืืืฉืจ "ืื ื ืืื". ืขืืืื ืงืืืื ื ืืกืคืจ ืงืจืื ืืืื ืืืื, ืืื ืจืง ืืืื ืขืจื ืืงืจืื :) ืืื ืฉืื ื ืืื ืืื ืืืฉ ืืืืืืืืจ. ืืื ืืื? ืืืื ืื ืจืง ืืขืืช ืื ืคืขืืืช. ืืืื ืืืืฉื ืงืจืก? ืืืื ื ื ืกื ืืืชืื ืืืืื ื ืืกืคืช.
public class Main {
public static void main(String[] args) {
//add 0.1 to zero eleven times in a row
double f1 = 0.0;
for (int i = 1; i <= 11; i++) {
f1 += .1;
}
// Multiply 0.1 by 11
double f2 = 0.1 * 11;
//should be the same - 1.1 in both cases
System.out.println("f1 = " + f1);
System.out.println("f2 = " + f2);
// Let's check!
if (f1 == f2)
System.out.println("f1 and f2 are equal!");
else
System.out.println("f1 and f2 are not equal!");
}
}
ืคืื ืืกืืฃ:
f1 = 1.0999999999999999
f2 = 1.1
f1 ะธ f2 ะฝะต ัะฐะฒะฝั!
ืื ืืจืืจ ืฉืื ืื ืขื ืืื ืฉื ืชืงืืืช ืืืฉื :) ืื ืงืืจื? ืฉืืืืืช ืืื ืืื ืงืฉืืจืืช ืืืืคื ืฉืื ืืกืคืจืื ืืืืฆืืื ืืฆืืจื ืืื ืืจืืช ืืืืืจืื ืืืืฉื. ืืขืืืื ืืื ืฉืืืขืจืืช ืืืื ืืจืืช ืื ืืคืฉืจ ืืืืฆื ืืืืืืง ืืช ืืืกืคืจ 0.1 . ืืื, ืื ืืฉืืื ืืขืฉืจืื ืืช ืืฉ ืืขืื ืืืื: ืื ืืคืฉืจ ืืืืฆื ืฉืืจืื ื ืืื (ืืืืงืื โ
ื ืงืื 0.333333333333333..., ืื ืื ืื ืืืืจื ืืชืืฆืื ืื ืืื ื). ืื ื ืจืื ืืื ืคืขืื: ืขื ืืืฉืืืื ืืืื, ืืืืื ืืืื ืืืืืช ืืืง ืืื ืืืฃ (0.00001) ืื ืืคืืื ืคืืืช. ืืื ืื ืื ืื ืืชืืฆืื ืฉื ืชืืื ืืช Very Serious ืฉืื ืชืืืื ืืืฉืืืื ืืื?
if (f1 == f2)
System.out.println("Rocket flies into space");
else
System.out.println("The launch is canceled, everyone goes home");
ืืจืืจ ืฉืฆืืคืื ื ืฉืฉื ื ืืืกืคืจืื ืืืื ืฉืืืื, ืืื ืืืื ืขืืฆืื ืืืืืจืื ืืคื ืืื, ืืืืื ื ืืช ืฉืืืืจ ืืจืงืื. ืื ืื, ืขืืื ื ืืืืืื ืืืฆื ืืืฉืืืช ืืื ืฉื ื ืืกืคืจื ื ืงืืื ืฆืคื ืื ืฉืชืืฆืืช ืืืฉืืืื ืชืืื ืืืชืจ... ืืืื... ืฆืคืืื. ืื, ืืืจ ืืืื ื ืืื ืืก' 1 ืืขืช ืืฉืืืืช ืืกืคืจืื ืืืฉืืื: ืืขืืื ืื ืชืฉืชืืฉ ==
ืืืกืคืจื ื ืงืืื ืฆืคื ืืขืช ืืฉืืืืช ืืกืคืจืื ืืืฉืืื. ืืืงืื, ืื ื ืืืฉื ืฉืื ืืกืคืืง ืืืืืืืช ืจืขืืช :) ืืืื ื ืกืชืื ืขื ืืืืื ืืืื!
public class Main {
public static void main(String[] args) {
final double threshold = 0.0001;
//add 0.1 to zero eleven times in a row
double f1 = .0;
for (int i = 1; i <= 11; i++) {
f1 += .1;
}
// Multiply 0.1 by 11
double f2 = .1 * 11;
System.out.println("f1 = " + f1);
System.out.println("f2 = " + f2);
if (Math.abs(f1 - f2) < threshold)
System.out.println("f1 and f2 are equal");
else
System.out.println("f1 and f2 are not equal");
}
}
ืืื ืื ืื ื ืืขืฆื ืขืืฉืื ืืช ืืืชื ืืืืจ, ืืื ืืฉื ืื ืืช ืืืจื ืฉืื ืื ืื ื ืืฉืืืื ืืช ืืืกืคืจืื. ืืฉ ืื ื ืืกืคืจ "ืกืฃ" ืืืืื - 0.0001, ืขืฉืจืช ืืืคืื ืืืช. ืืืื ืืืืืช ืฉืื ืฉืื ื. ืื ืชืืื ืืืืืช ืืืฉืืืื ืืืืืืงืช ืฉืืชื ืฆืจืื ืืืงืจื ืืกืืื. ืืชื ืืืื ืืขืฉืืช ืืช ืื ืืืื ืื ืงืื ืืืชืจ. ืืืืฆืขืืช ืืฉืืื, Math.abs()
ื ืงืื ืืช ืืืืืืืืก ืฉื ืืกืคืจ. ืืืืืืืืก ืืื ืืขืจื ืฉื ืืกืคืจ ืืื ืงืฉืจ ืืกืืื. ืืืืืื, ืืืกืคืจืื -5 ื-5 ืืืื ืืขืื ืืืชื ืืืืืืืก ืืื ืืืื ืฉืืืื ื-5. ื ืืกืจ ืืช ืืืกืคืจ ืืฉื ื ืืืจืืฉืื, ืืื ืืชืืฆืื ืืืชืงืืืช, ืืื ืงืฉืจ ืืกืืื, ืงืื ื ืืืกืฃ ืฉืืืืจื ื, ืื ืืืกืคืจืื ืฉืื ื ืฉืืืื. ืืื ืืงืจื, ืื ืฉืืืื ืืืืืช ืืืืืง ืฉืงืืขื ื ืืืืฆืขืืช "ืืกืคืจ ืืกืฃ" ืฉืื ื , ืืืืืจ, ืืื ืืคืืืช ืื ืฉืืืื ืขื ืืขืฉืจืช ืืืคืื ืืืช. ืฉืืืช ืืฉืืืื ืื ืชืืกืื ืืื ืืช ืืืชื ืืืืช ืืืืชื ืฆืคืืื ืฉืจืืื ื ืืืงืจื ืฉื ==
. ืืจื ืืืื ื ืืกืคืช ืืืฉืืืช ืืกืคืจืื ืืืืชืืื ืืื ืืืฉืชืืฉ ืืืืืงื ืืืืืืช BigDecimal
. ืืืืงื ืื ื ืืฆืจื ืืืืืื ืืื ืืืืกื ืืกืคืจืื ืืืืืื ืืืื ืขื ืืืง ืืืงื. ืฉืื ืืื double
ื float
, ืืขืช ืฉืืืืฉ BigDecimal
ืืืืืืจ, ืืืกืืจ ืืคืขืืืืช ืืชืืืืืช ืืืจืืช ืืชืืฆืขืืช ืื ืืืืฆืขืืช ืืืคืจืืืจืื ( +-
ืืื'), ืืื ืืืืฆืขืืช ืฉืืืืช. ืื ืื ืืืจืื ืืืงืจื ืฉืื ื:
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
/*Create two BigDecimal objects - zero and 0.1.
We do the same thing as before - add 0.1 to zero 11 times in a row
In the BigDecimal class, addition is done using the add () method */
BigDecimal f1 = new BigDecimal(0.0);
BigDecimal pointOne = new BigDecimal(0.1);
for (int i = 1; i <= 11; i++) {
f1 = f1.add(pointOne);
}
/*Nothing has changed here either: create two BigDecimal objects
and multiply 0.1 by 11
In the BigDecimal class, multiplication is done using the multiply() method*/
BigDecimal f2 = new BigDecimal(0.1);
BigDecimal eleven = new BigDecimal(11);
f2 = f2.multiply(eleven);
System.out.println("f1 = " + f1);
System.out.println("f2 = " + f2);
/*Another feature of BigDecimal is that number objects need to be compared with each other
using the special compareTo() method*/
if (f1.compareTo(f2) == 0)
System.out.println("f1 and f2 are equal");
else
System.out.println("f1 and f2 are not equal");
}
}
ืืืื ืกืื ืฉื ืคืื ืงืื ืกืืื ื ืงืื?
f1 = 1.1000000000000000610622663543836097232997417449951171875
f2 = 1.1000000000000000610622663543836097232997417449951171875
f1 ะธ f2 ัะฐะฒะฝั
ืงืืืื ื ืืืืืง ืืช ืืชืืฆืื ืฉืฆืืคืื ื ืื. ืืฉืืื ืื ืขื ืืื ืืื ืืืกืคืจืื ืฉืื ื ืืืืืงืื, ืืืื ืืงืืืืช ืขืฉืจืื ืืื ืืชืืืืื ืืื! ืืจืื ืืืชืจ ืืืฉืจ ื float
ืืืคืืื ื double
! ืืืจื ืืช ืืฉืืขืืจ BigDecimal
ืืขืชืื, ืืืืื ืชืฆืืจืื ืืืชื :) ืคืื! ืืืจืฆืื ืืืืชื ืื ืืจืืื, ืืื ืขืฉืืช ืืช ืื: ืื ืืืืื! :) ื ืชืจืื ืืฉืืขืืจ ืืื, ืืชืื ืช ืขืชืืื!
GO TO FULL VERSION