x0v*_*x0v 1 c++ java floating-point
我非常了解C++,但我是java的初学者.
Java程序提供输出3.2999997
import java.util.*;
import java.lang.*;
import java.io.*;
class Test
{
public static void main(String args[])
{
float f = 9.9f, m = 3.3f;
float c = f % m;
System.out.println(c);
}
}
Run Code Online (Sandbox Code Playgroud)
C++程序提供输出8.88178e-16
#include <iostream>
#include<math.h>
int main()
{
float f = 9.9f, m = 3.3f;
std::cout << fmod (9.9,3.3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我对C++程序的输出感到满意,但为什么Java没有给出零响应?
这怎么可能,因为3.3*3 = 9.9
我知道Java认为float的精度为6-7位小数,但我不知道这个输出是怎么来的?我在网上研究了这个问题,但没有找到这背后的逻辑.