gpt4 book ai didi

c# - VS 告诉我强制转换是多余的,但即使没有强制转换也不会返回正确的数据类型

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:41 26 4
gpt4 key购买 nike

请耐心等待:我有一个非常简单的比较,比较包含在字典中的一个值,它是一个 int 和一个 float。

比较前,我把值除以100,所以得到一个十进制值(int是50,除以100,得到0.5)。

baseline = 0f;
if ((mydict["intvalue"] / 100) > baseline)
...do something

0.5 大于 0.0,所以它应该“做某事”。

现在,比较总是失败;因为一个 int 除以 100,结果在 0 和 1 之间,最终将是一个值为 0 的 int,据我所知。我确实投了值;解决这个问题,但 VS 告诉我类型转换是多余的;无论哪种方式,结果仍然是 0。我不明白我在这里做错了什么。

baseline = 0f;
if ((float)(mydict["intvalue"] / 100) > baseline)
...do something

编译器告诉我不需要强制转换,但即使我将强制转换放在那里;我仍然得到 0。

最佳答案

这是因为 float 转换应该在其中一项(mydict["intvalue"]100)中完成,并且不是他们的结果:

//here is one correct way of doing it
if (((float)mydict["intvalue"] / 100) > baseline)

//alternatively
if ((mydict["intvalue"] / 100f) > baseline)

你之前做的是整数除法,然后你转换为 float ,因此它是多余的:

//note that here you do division first before casting to float
if ((float)(mydict["intvalue"] / 100) > baseline)

关于c# - VS 告诉我强制转换是多余的,但即使没有强制转换也不会返回正确的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37319210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com