jfm*_*fmg 1 java nan long-integer
import java.util.*;
import java.lang.*;
import java.io.*;
public class MyClass {
public static void main (final String[] args) {
float distanceInMeters = 0.0f;
long time = 1439230171182L;
long previousTime = 1439230111554L;
float speed = (distanceInMeters / 1000) / ((time - previousTime)/3600000);
System.out.println(speed);
}
}
Run Code Online (Sandbox Code Playgroud)
该计算返回"NaN".有谁知道为什么?
你总是除以零.你减去两个长数然后进行整数除法.这两个长度将小于3600000,因此您的结果将是(distanceInMeters / 1000) / 0=NaN
让我们把一些我们的价值观并计算出来:
(distanceInMeters / 1000) / ((time - previousTime)/3600000);
Run Code Online (Sandbox Code Playgroud)
和...一样
( 0.0f / 1000) / ((1439230171182L - 1439230111554L)/3600000)
Run Code Online (Sandbox Code Playgroud)
0.0f/1000 = 0.0f而1439230171182L - 1439230111554L = 59628L这样我们就得到
( 0.0f ) / (( 59628L )/3600000)
Run Code Online (Sandbox Code Playgroud)
59628L/3600000= 0(整数除法)
因此,我们和了0.0f / 0这是NaN(不是数字).
如果你会分裂1.0f / 0,你会得到Infinity和-1.0f / 0你会得到-Infinity
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |