问一个计算问题

shinngjis 2012-03-09 05:13:57
1000/18522000
不管用double 还是float都只给了一个0.0这个是为什么
顺便还问一个 float值怎么赋值给一个int类型的变量 要求要高精度不能舍
...全文
87 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
muyi66 2012-03-09
  • 打赏
  • 举报
回复
这个值远小于1,你要赋给整形变量只有两个办法:

1、直接丢掉小数部分,于是变量里就剩下0。

2、给一个固定的扩大比值,先将结果扩大之后再转换为整数保存。

比如
int a = Math.Round(x*100000);
这样,a里就保存着扩大了10万倍后取整的x值了。
卡索瓦 2012-03-09
  • 打赏
  • 举报
回复
把float放大N倍后,把值赋给int类型,用的时候可以再缩小N倍
shinngjis 2012-03-09
  • 打赏
  • 举报
回复
继续求前辈求高手 有好的办法小弟加分呐
shinngjis 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yibey 的回复:]

我猜下楼主的表达,,

楼主是想2个浮点数相除后获得的浮点数,赋值给一个整数变量是么。。

如果是这样的话精度肯定是会丢失的。 一种是(int)0.55f强制转化 只取浮点数的整数部分,还有一种是Convert.ToInt32(0.55f) 小数四舍五入
[/Quote]
刚算了一下结果等于0.00005398985 这样转化出来估计没意义了吧
shinngjis 2012-03-09
  • 打赏
  • 举报
回复
第二个问题小弟自己想了个办法 把第一个算法出来的值作为单位 然后相加 用substring 截取 如果近似于1就截取赋值 不过好像数据就不太准 望前辈指教
yibey 2012-03-09
  • 打赏
  • 举报
回复
我猜下楼主的表达,,

楼主是想2个浮点数相除后获得的浮点数,赋值给一个整数变量是么。。

如果是这样的话精度肯定是会丢失的。 一种是(int)0.55f强制转化 只取浮点数的整数部分,还有一种是Convert.ToInt32(0.55f) 小数四舍五入
qiyue444865262 2012-03-09
  • 打赏
  • 举报
回复
你可以这样定义方法
public float test()
{
privat float num;
num=1000/18522000;
return num;
}
希望对你有帮助
shinngjis 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chinajiyong 的回复:]

引用楼主 shinngjis 的回复:
1000/18522000
不管用double 还是float都只给了一个0.0这个是为什么
顺便还问一个 float值怎么赋值给一个int类型的变量 要求要高精度不能舍

这个问题问了无数遍了,两个整数求商,那就是整数咯,要得到浮点数,指定一个浮点数或者double
[/Quote]
额 呵呵 小弟是新手不太懂麻烦大家了
shinngjis 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 muyi66 的回复:]

1000/18522000.0

要写成这样,否则就成了整数除法了,结果当然是0。
[/Quote]
谢谢 我现在想把这个float值赋值给一个int类型的属性怎么办
shinngjis 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 viewstates 的回复:]

1000/(float)18522000

你用的是两个整形,结果也先被转成整形了。
[/Quote]
谢谢 我现在想把这个float值赋值给一个int类型的属性怎么办
EnForGrass 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 shinngjis 的回复:]
1000/18522000
不管用double 还是float都只给了一个0.0这个是为什么
顺便还问一个 float值怎么赋值给一个int类型的变量 要求要高精度不能舍
[/Quote]
这个问题问了无数遍了,两个整数求商,那就是整数咯,要得到浮点数,指定一个浮点数或者double
muyi66 2012-03-09
  • 打赏
  • 举报
回复
1000/18522000.0

要写成这样,否则就成了整数除法了,结果当然是0。
ViewStates 2012-03-09
  • 打赏
  • 举报
回复
1000/(float)18522000

你用的是两个整形,结果也先被转成整形了。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧