社区
数据结构与算法
帖子详情
double转int精度丢失
nikun_
2012-02-10 04:33:09
double x;
int y;
x=0.03;
y=(int)(x*100);
y成2了,我想要的是3啊,这是怎么回事,应该怎么搞法?
...全文
710
13
打赏
收藏
double转int精度丢失
double x; int y; x=0.03; y=(int)(x*100); y成2了,我想要的是3啊,这是怎么回事,应该怎么搞法?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
V68V6
2012-02-11
打赏
举报
回复
浮点数存储以及精度损失相关讨论
V68V6
2012-02-11
打赏
举报
回复
@#12:
可能你需要看一看计算机组成原理中关于浮点数的存储相关知识,另外最后参与运算在加法器中都是0和1的字符串。这之中就涉及数据截取的问题.十进制在转换为二进制的时候可能会不准确,这就造成精度问题。
浮点数保留5位小数输出时一般采用“舍入法”,而转换成整数时一般采用“舍去法”。这造成一些看起来很荒谬的结果。
nikun_
2012-02-11
打赏
举报
回复
[Quote=引用 11 楼 v68v6 的回复:]
浮点数存储以及精度损失相关讨论
[/Quote]
这个帖子我也看过,我正是同样的疑惑,到底是为什么?
昵称很不好取
2012-02-10
打赏
举报
回复
看下浮点数在计算机中的存储就明白了,浮点数在计算机中存储时有的会有精度的损失的
cotton201012
2012-02-10
打赏
举报
回复
应该是浮点误差吧,电脑不能存储精确的二进制数
x*100 算成2.999........ 是很正常的。然后强制类型转换导致误差。
cnmhx
2012-02-10
打赏
举报
回复
要有floor,cell,int的区别。
有些语言是缺省的。
kerbcurb
2012-02-10
打赏
举报
回复
y=(int)(x*100 + 0.5);
appdev_liu
2012-02-10
打赏
举报
回复
涉及精度丢失问题,不同的编译器出来的值未必一样
我用TC测了一下LZ代码,出的结果就是2.
appdev_liu
2012-02-10
打赏
举报
回复
原因就是你标题上注明的,高精度(double)强制性转换成低精度类型(int),产生精度丢失的现象.
yaoweijq
2012-02-10
打赏
举报
回复
刚在jdk6上试了下,是3
2是什么环境下执行的?
ps:0.03在计算机中是不能精确表示的
可能会引起精度丢失问题
精度要求高的话,不能这么搞的
appdev_liu
2012-02-10
打赏
举报
回复
int 换 double试试
EEXXTTJJSS
2012-02-10
打赏
举报
回复
是3啊。
q345918550q
2012-02-10
打赏
举报
回复
你(int)(x*100);这里强制从double转换成int类型
double
转
int
精度
丢失
问题
先来看一下
精度
丢失
的现象: #include <iostream> #include <cmath> using namespace std;
int
main() {
double
a = 74.46;
int
b = a * 100; cout << "a: " << a << " b: " << b <<endl; return 0; } 结果: 解决:采用四舍五入的方法 #includ
QT
double
转
int
精度
丢失
问题
double
转
int
精度
丢失
,限制条件:
double
小数部分为0
【c++】
double
转
int
精度
丢失
问题
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
double
类型
转
int
类型,
精度
丢失
的问题
碰到一个问题,就是
double
类型在进行降级强
转
int
类型的时候,发生了
精度
丢失
。先来看一下现象 比如
double
num1 = 49.99;
int
num2 = (
int
)(num1 *100); 输出后,num2 等于 4998 但是在num1 等于49.97或49.98的时候,
转
换成
int
后的值分别为
java se --
Double
强
转
Int
精度
丢失
问题
精度
丢失
错误示例 错误模拟及解决方法代码如下 package test; import java.math.BigDecimal; /** * 测试(
Double
强
转
Int
)
精度
丢失
问题 * * @author wangsong * @date 2019年9月21日 */ public class Test
Double
Int
{ public static void mai...
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章