我需要这样做(不圆,地板或天花板):
示例:
1.58700023(16bits)
预计为1.58700000
我正在执行此操作:(value-32768.0)/ 32768转换为(浮点数中的字节值为实数值)int他的转换有此错误= X.00000023或其他
答案 0 :(得分:1)
很可能你不能用花车来做这件事;请注意,并非所有值都可以完全表示为 ID_SINIESTRO piece.agr TIPO_HAB_D DS_PARTE_D DS_ESTETICO_PARTIDA code_bareme total_cost
<chr> <chr> <chr> <chr> <chr> <chr> <dbl>
2 100210#000000331493904#2 COC ASE _DIVERS Esteticos P003 344.60
5 100210#000000986776904#2 ASE ASE _DIVERS Directos PB101 174.20
:它毕竟限制为32(通常)位。
对于打印,您应该可以使用:
float
当值转换为字符串时,这将通过舍入打印printf("%.3f", 1.58700023);
。
答案 1 :(得分:0)
我假设你想用基元实现舍入。
要舍入到四个小数位,乘以10e4,转换为整数(有效截断或删除小数),然后除以浮点值10e4,再将结果转换回浮点数。例如:
#include <stdio.h>
int main()
{
double f = 1.58700023;
printf("%10.10f\n", f);
// Round to 4 decimal places
double r = (int)(f*10000.0)/10000.0;
printf("%10.10f\n", r);
return 0;
}
输出:
1.5870002300
1.5870000000
但是,此例程不支持许多边缘情况。例如,您可能希望添加1 / 10e4的一半来执行舍入到最接近的下一个数字等。