在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#中做到这一点.
在查看代码之前,您应该考虑应用程序的需要.做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.这可能会大大改变你的最终结果.您需要考虑应用程序中的要求.