将float转换为int算法的最佳方法是什么?

voi*_*ter 2 c# casting

在C#中,我正在做这样的事情:

float a = 4.0f;
float b = 84.5f;
int ans = a * b;
Run Code Online (Sandbox Code Playgroud)

但是,编译器声明需要在赋值时从float - > int转换.我当然可以这样做:

int ans = (int)a * (int)b;
Run Code Online (Sandbox Code Playgroud)

但这是丑陋和多余的.有没有更好的办法?我知道在C++中我可以这样做:

int ans = int(a * b);
Run Code Online (Sandbox Code Playgroud)

至少在眼睛看起来好一点.但我似乎无法在C#中做到这一点.

Dav*_*rab 9

在查看代码之前,您应该考虑应用程序的需要.做float数学int,不是一件轻松的事情.真正的问题是你在最终答案中寻找什么.

a被强制转换为4,b被强制转换为84,这是336的结果.但是如果在进行数学运算后将其转换为int,则结果为338.

2对你来说是否足够好?然后你必须这样做

int ans = (int)a * (int)b;

// ans = 336
Run Code Online (Sandbox Code Playgroud)

如果你想338,那么你必须这样做

int ans = (int)(a * b);

// ans = 338
Run Code Online (Sandbox Code Playgroud)

我真的会考虑你正在做的事情的副作用.理想情况下,在进行数学计算之前,您应该有一个用于舍入2个浮点数的策略.记住,转换为int只会减少一个小数.所以84.9变为84.这可能会大大改变你的最终结果.您需要考虑应用程序中的要求.