注册 登录
编程论坛 C++教室

新人小白求助,int整数与小数乘积异常是什么原因啊?

sdlr2000 发布于 2022-11-05 13:46, 1079 次点击
学习过程中发现一个问题。
程序代码:

int i = 566;
Console.WriteLine(i*0.85);
Console.ReadLine();

为什么我的运行结果是481.09999999999997。
是哪里出错了,需要怎么改啊?
2 回复
#2
rjsp2022-11-05 18:53
你这不是 C++!当然,结果是对的

你需要了解一下什么叫“浮点数”(位数固定的科学计数法)
0.85 在计算机眼中是 0.84999999999999997779553950749686919152736663818359375
566*0.85 在计算机眼中是 481.09999999999996589394868351519107818603515625
481.09999999999996589394868351519107818603515625 的 the shortest round-trip 是 481.09999999999997

程序代码:
#include <iostream>
#include <format>
using namespace std;

int main( void )
{
    int i = 566;
    cout << format("{}",i*0.85) << endl;
}

这才是 C++
#3
sdlr20002022-11-05 19:56
回复 2楼 rjsp
谢谢大佬,我看了一下,我看的是C#,
不过道理应该是一样的。谢谢!
1