float型进行除与取模运算,求解

lein_zhang 2012-08-17 03:31:36
float a = 200.9f;
float b = 2.45f;
int c = (int)(a/ b);
float d = a % b;
Console.WriteLine("c={0},d={1}",c,d);
Console.Read();
运行结果c=81,d=2.449999
...全文
1297 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
大大黑眼圈 2012-08-17
  • 打赏
  • 举报
回复
建议自己另外写方法求模 浮点数求模运算好像是把后面看做是有默认位数的值 当你绑定datagridview的时候就能看到了 虽然保存的是两位小数 但是现实的却是多位 如2.55 显示可能是2.559999999999999999....
c2606050113 2012-08-17
  • 打赏
  • 举报
回复

.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 52 (0x34)
.maxstack 3
.locals init ([0] float32 a,
[1] float32 b,
[2] int32 c,
[3] float32 d)
IL_0000: nop
IL_0001: ldc.r4 200.89999
IL_0006: stloc.0
IL_0007: ldc.r4 2.45
IL_000c: stloc.1
IL_000d: ldloc.0
IL_000e: ldloc.1
IL_000f: div
IL_0010: conv.i4
IL_0011: stloc.2
IL_0012: ldloc.0
IL_0013: ldloc.1
IL_0014: rem
IL_0015: stloc.3
IL_0016: ldstr "c={0},d={1}"
IL_001b: ldloc.2
IL_001c: box [mscorlib]System.Int32
IL_0021: ldloc.3
IL_0022: box [mscorlib]System.Single
IL_0027: call void [mscorlib]System.Console::WriteLine(string,
object,
object)
IL_002c: nop
IL_002d: call int32 [mscorlib]System.Console::Read()
IL_0032: pop
IL_0033: ret
} // end of method Program::Main

精度问题,一般不要使用float
木头小菜 2012-08-17
  • 打赏
  • 举报
回复
先乘10的N次方转换成int 然后再还原回去= =
guanpengndsc 2012-08-17
  • 打赏
  • 举报
回复
楼上正解
tiny_god 2012-08-17
  • 打赏
  • 举报
回复
求模本来就只是整数和整数之间的事儿,你把他们先转换成整形,求余就好了,要一定要对浮点数干这事儿,可以先乘上一定倍数变成整数,再求余,然后除以该倍数,从而得到小数的余值
lein_zhang 2012-08-17
  • 打赏
  • 举报
回复
要想对浮点数取模怎么办,求教
shizhu820228 2012-08-17
  • 打赏
  • 举报
回复
精度问题,一般都变成木有小数点就好了。原来遇到过,没找着神马好办法。
shizhu820228 2012-08-17
  • 打赏
  • 举报
回复

float a = 200.9f;
float b = 2.45f;
a *= 100;
b *= 100;
int c = (int)(a / b);
float d = (a) % (b);
Console.WriteLine("c={0},d={1}", c, d);
lein_zhang 2012-08-17
  • 打赏
  • 举报
回复
你没发现问题?

shizhu820228 2012-08-17
  • 打赏
  • 举报
回复
有什么问题?
lein_zhang 2012-08-17
  • 打赏
  • 举报
回复
正常结果应为c=82,d=0;这是为什么?求高手指点

111,092

社区成员

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

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

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