我正在学习操作系统编程,我需要假设我的资源很少。
那么,例如,我应该如何计算2/3并将其截断到小数点后两位?有没有什么数学算法或位操作技巧可以让我使用?
发布于 2012-10-20 14:12:06
你不能将浮点数四舍五入为基数10的两位或基数10位的任意数,浮点数只是近似值。有许多基数10位数不能精确地表示为具有有限小数位数的基数2位数,这与您不能表示具有有限小数位数的基数10中的数字1/3的原因完全相同。您应该将浮动视为近似值,然后仅将其作为显示的一部分。或者,如果你不想要近似值,那么可以使用整数来表示1/ 100,然后将它们除以100,从而得到要显示的值。
发布于 2012-10-20 13:24:42
如果您不打算操作该变量(只需打印它),您也可以使用:
printf("%.2f\n", 2.f / 3);发布于 2012-10-20 13:13:59
四舍五入到小数点后两位:乘以100,转换为整数,再除以100.0 (尽管请注意,您不能说浮点数在其本机表示形式中通常在小数点后恰好有两位十进制数字;在本机表示形式中不需要是舍入数字)。
出于这个原因-我实际上认为乘以100,并存储为一个整数,并理解这代表一个单位的百分之一,是一种更准确的方式来表示“精确到小数点后两位的数字”。
https://stackoverflow.com/questions/12985463
复制相似问题