有一些浮点数和整数,我必须将它们相乘。
float length = 40;
float width = 25.7f;
float height = 27.6f;
int count = 361;
var result = length * width * height * count;
此代码的输出等于 10242826
当我使用计算器时,输出为: 10242580.8
为什么几个数相乘的结果与计算器中的相乘结果为什么不同?
答案 0 :(得分:2)
差异仅由代码中使用的浮点数引起。
它们的精度较低。
要修复代码,只需将其替换为双精度字:
double length = 40;
double width = 25.7d; // <-Remofe "f" IMPORTANT! or use "d" instead (e.g.: 25.7d)
double height = 27.6d; // <-Remofe "f" IMPORTANT! or use "d" instead (e.g. 27.6d)
int count = 361;
var result = length * width * height * count;
这将产生与计算器相同的结果:
10242580.8
P.S。您也可以使用这样的简化版本:
var length = 40;
var width = 25.7; // No need of "d", as the type is automatically set to double
var height = 27.6; // No need of "d", as the type is automatically set to double
var count = 361;
var result = length * width * height * count;
答案 1 :(得分:1)
要为@Just Shadow的出色答案添加其他方法,您还可以使用其他度量单位,避免使用浮点数或双精度数:
如果您有25.7米,可以将其表示为2570厘米,这是整数。
在处理货币时,有时会使用这种技术,因此,将美元表示为1.25,而不是将其表示为1.25,就可以得到一切
只要知道所需的精度水平,就可以进行这些转换并摆脱有问题且昂贵的浮点算法。
答案 2 :(得分:1)
appRoleId
和Get https://graph.microsoft.com/v1.0/servicePrincipals/{your resourceId}
内部表示float
中的数字。 double
中可表示的数字精确表示为浮点数和双精度数。因此,大多数带有分数成分的文字(以10为底)将无法精确表示。
但是在这种情况下,您可以使用小数获取精确值,因为实数以10为底,所以小数可以精确表示25.7之类的数字。