写在前面,学习韩顺平老师的JAVA基础课,对java做浮点数除法的一些探讨
问题描述见下图
JAVA语言实现8.1/3
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
double num2 = 8.1 / 3;
System.out.println(num2);
}
}
c++实现 8.1/3
#include <iostream>
using namespace std;
int main() {
// your code goes her
double n = 8.1 ;
n = n /3;
printf("%lf",n);
return 0;
}
结果分析
** java做浮点数除法时,实际上计算机是将8.1转换为机器数进行运算,而它本身就是个近似值,自然无法得到准确结果,这里需要对计算机运算方法有一点了解,不要把它当成是人计算。
c++我的理解是一样的会有精度损失,只是底层可能已经做了近似处理,才得到和人计算一样的结果。【有更好的解释清告知,这里只是个人猜测】
**