tôi cho nó một tìm kiếm ngắn và chạy một số xét nghiệm ngay cả trên các kịch bản và tôi cũng tìm thấy những kết quả sau đây, ở định dạng kịch bản tôi thử nghiệm nó như là,
<script>
var a = 5;
var b = 5;
var c = 7;
var d = 6;
var ee = 6;
var f = 8;
var g = 9;
var h = 6;
var i = 6;
var j = 4;
var k = 8;
var l = 9;
var m = 5;
var x = a * b * c * d * ee * f * g * h * i * j * k * l * m;
var y = eval(a * b * c * d * ee * f * g * h * i * j * k * l * m);
document.writeln("RESULT X : " + x);
document.write("<br>");
document.writeln("RESULT Y : " + y);
</script>
và kết quả là 23514624000
cho cả x
và y
, nhưng trong C# khi bạn cố gắng nhân tất cả các số nguyên và kết quả là một số nguyên được hình thành nhưng chúng tôi cũng biết rằng int.MAX = 2147483647
là ít hơn sau đó kết quả actuall, Vì vậy, kết quả khi gán cho long x= a * b * c * d * ee * f * g * h * i * j * k * l * m;
nó cắt ngắn giá trị ban đầu, và ngược lại sult nó không phải là, nếu bạn muốn kết quả tương tự trong cả hai bạn có thể sử dụng đoạn mã sau,
int a = 5;
int b = 5;
int c = 7;
int d = 6;
int ee = 6;
int f = 8;
int g = 9;
int h = 6;
int i = 6;
int j = 4;
int k = 8;
int l = 9;
int m = 5;
long x = (long)a * b * c * d * ee * f * g * h * i * j * k * l * m;
double aa = 5;
double ab = 5;
double ac = 7;
double ad = 6;
double aee = 6;
double af = 8;
double ag = 9;
double ah = 6;
double ai = 6;
double aj = 4;
double ak = 8;
double al = 9;
double am = 5;
long y = (long)(aa * ab * ac * ad * aee * af * ag * ah * ai * aj * ak * al * am);
Console.WriteLine(x);
Console.WriteLine(y);
Console.ReadKey();
Bây giờ bạn sẽ nhận được kết quả tương tự tức là
Nguồn
2015-01-12 12:48:07
vì '' long'' và '' double' 'là những thứ khác nhau –
Đôi và nổi __cannot__ giữ bất kỳ số nào với độ chính xác 100%, trừ khi nó là một sức mạnh của 2. Thay vào đó chúng chỉ giữ __approximations__ .. Đó là lý do chúng tôi có số thập phân – TaW
Tôi khuyên bạn nên bật kiểm tra tràn trong cài đặt dự án của mình (tại ít nhất cho bản dựng gỡ lỗi). – CodesInChaos