我正在阅读演示板(特别是DC21561A)提供的代码,并发现以下代码片段:
int32_t min_current_threshold_code;
min_current_threshold_code = (min_current_threshold / LTC2946_DELTA_SENSE_lsb) * resistor;
ack |= LTC2946_write_16_bits(LTC2946_I2C_ADDRESS, LTC2946_MIN_DELTA_SENSE_THRESHOLD_MSB_REG, (min_current_threshold_code << 4));
Run Code Online (Sandbox Code Playgroud)
在这里,第一次分配的RHS上的所有内容都是浮动的。根据我的判断,经过测试,使用LHS int32_t和RHS float的赋值将舍弃float的十进制位,仅保留整数;即“ 1.5 * 3.5 = 5”。
上面的数据通过I2C写入寄存器。我假设使用浮点数可以更准确地估算阈值。但是,我想知道将浮点数分配给int32_t时是否需要C(或C ++)标准或某些特定于编译器的截断?
编辑**有些人要求输入更多代码。虽然我的问题得到了回答,但这里是为了彻底。
在文件的顶部
float min_current_threshold = read_float();
const float LTC2946_DELTA_SENSE_lsb = 2.5006105E-05;
const浮动电阻= .02;