avatar
double转换int的问题# Programming - 葵花宝典
h*1
1
王者荣耀中每个英雄都有自己专属的台词,有些台词富含着人生哲理,今天我们就来盘
点一下这些富含哲理的台词。
忍无可忍,无需再忍
出自韩信。
人可以谦让,可以忍让。但到了忍无可忍的时候,我们无需再忍。
毕竟,人总是要为自己而活的。
个子矮?就别怪我多踩两脚
出自刘邦。
当你被别人踩踏的时候,不要怪别人,只怪自己站得还不够高。
因此我们要咬紧牙尖,更上一城楼。
知识就是力量
出自安琪拉。
这句话似乎我们都听腻了,但是知识确实是力量。
在生活中,多一分知识(即使是小小的一份),也会让你有更强的力量。
心怀不惧,方能翱翔于天际
出自赵云。
必须要敢做一件事,才能知道是否能成功。
一开始就畏惧,就已经失败。
我命由我
出自项羽。
自己的命运,由自己决定。
我的命,我做主。
人生就是不断的战斗
出自宫本武藏。
人生就是不停地比拼,你赢了别人就输了,别人赢了你就输了。
这是一场永无止境的斗争,我们只能提高自己才不会被淘汰。
终极大招,断掉对面的wifi
出自狄仁杰—超时空战士。
这句话似乎很可笑,但如今我们已经离不开WIFI。
希望和奇迹是存在的
出自小乔。
无论遇到多大的困难,都要有颗乐观的心。
当失去了所有的东西,下一秒就会获得东西,因为已经没有东西可以失去了。
征服了男人也就征服了世界
出自芈月。
不知道该怎么解释,反正就觉得很有哲理(哈哈)。
深刻而不深沉,平淡而不平庸
出自刘备。
你可以是一个普通人,但又要与别人有差别。
你可以是一个平凡的人,但不可以是一个平庸的人。
出来混,最重要的是讲义气
出自刘备。
朋友一生一起走,那些日子不再有。
一句话,一辈子,一身情,一杯酒。
可以赶尽,无法杀绝
出自李白—千年之狐
你可以把我打倒,但不会把我打败。
你打倒的是我的身体,但打倒不了我的心。
别在来不及的时候后悔
出自露娜。
如果你喜欢他(她),那么请珍惜他(她)。
别在来不及的时候后悔。
avatar
j*b
2
今晚好天色,想一面赏月一面听老贝的Moonlight Sonata
哪儿有无损下载?请推荐.送月饼答谢.
avatar
s*s
3
几个问题:
1)现在用messenger与同学保持联系很方便,以后有什么替代?
QQ太花哨;Facebook国内上不了;
2)为什么那么多人喜欢用Skype?用Google难道不更好,更省钱?
3)Messenger现在有3亿5千万Active用户,这么大的用户群Microsoft说仍就仍了?
avatar
g*s
4
double x = ***;
int y = (int) x;
这里不是四舍五入。谁知道算法是什么?复杂度多少?
另外int转double的算法呢?
avatar
s*e
5
你这个问题问得复杂了。我越想越觉得得去问搞汇编的同学们了。

【在 g*********s 的大作中提到】
: double x = ***;
: int y = (int) x;
: 这里不是四舍五入。谁知道算法是什么?复杂度多少?
: 另外int转double的算法呢?

avatar
X*r
6
什么语言?
如果是C/C++的话,规定是truncate,就是小数点后部分去掉。

【在 g*********s 的大作中提到】
: double x = ***;
: int y = (int) x;
: 这里不是四舍五入。谁知道算法是什么?复杂度多少?
: 另外int转double的算法呢?

avatar
w*g
7
是truncate。我记错了。一直当四舍五入用的,程序里不知道出了多少bug。

【在 X****r 的大作中提到】
: 什么语言?
: 如果是C/C++的话,规定是truncate,就是小数点后部分去掉。

avatar
g*s
8
出现了这样的情况:double = 28032400.000000,int = 28032399。怎么回事呢?

【在 X****r 的大作中提到】
: 什么语言?
: 如果是C/C++的话,规定是truncate,就是小数点后部分去掉。

avatar
X*r
9
因为28032400.000000本身并不是这个浮点数的正真的值(即使你把这个常数赋给浮点
变量)。浮点数的精度是有限的。正如一个整型变量不能精确地表述1.5一样,浮点变
量只能精确表述有限个特定的有理数,而不是任意有理数。这个浮点变量实际的值比
28032400.000000略小一点点,所以转换成整数就成了28032399了。
因此,千万不要假定以浮点类型存储的整数转换成整型后还是原来整数的值。

【在 g*********s 的大作中提到】
: 出现了这样的情况:double = 28032400.000000,int = 28032399。怎么回事呢?
avatar
l*8
10
The "double" type has enough bits to hold small integers (such as 28032400)
without loss of accuracy. Here the "without loss of accuracy" means at the
magnitude of 1e+7 the error is less than +/- 0.5. Internally this number
might be 28032399.999 but after truncation you get 28032399.
Use round() to 四舍五入
avatar
x*u
11
显然小的很啊,你搜搜汇编语言里面说的浮点数的含义,就明白了。

【在 g*********s 的大作中提到】
: double x = ***;
: int y = (int) x;
: 这里不是四舍五入。谁知道算法是什么?复杂度多少?
: 另外int转double的算法呢?

avatar
O*e
12
Single-precision floating point number have 23 normalized bits of
accuracy in the mantissa, which gives six decimal places of accuracy,
and can represent integers up to 16777216 exactly.
Double-precision floating point numbers have 52 normalized bits of
accuracy in the mantissa, which gives 15 decimal places of accuracy,
and can represent integers up to 9007199254740992 exactly.
What is happening in your case is that you are starting with the single-
precision representation of 28032400.0, which

【在 g*********s 的大作中提到】
: 出现了这样的情况:double = 28032400.000000,int = 28032399。怎么回事呢?
avatar
z*i
13
It is a truncation. You can write a simple C code, and check its
assemly to figure out what it is doing. X86 has the fistpl (convert float to
integer) instruction to do that.
But be careful if performance is important in your code. Since the
conversion
is very slow (stall FPU due to fldcw - load FPU control word).
146 80483ee: d9 6d e4 fldcw -0x1c(%ebp)
147 80483f1: db 5d f4 fistpl -0xc(%ebp)
148 80483f4: d9 6d e6 fldcw -0x1a(%ebp)
int to

【在 g*********s 的大作中提到】
: double x = ***;
: int y = (int) x;
: 这里不是四舍五入。谁知道算法是什么?复杂度多少?
: 另外int转double的算法呢?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。