我有代表数字输入数据的字符串需要转换为整数。 数据带或不带小数点,需要在存储为长整数时缩放为1e-6。有理数转换为long int
例
input: "10.123456" to output: 1L
input: "1.5" to output: 1500000L
与浮点运算的简单的方法是
float numf;
sscanf(text,"%f",&numf);
numf *= 1E6;
result = (long)numf;
即精细,但结果是不准确的由于四舍五入。它还需要我想避免的浮点数学。
什么是一个很好的方法来转换这个准确。 我正在考虑将输入填充到所需的6位小数,然后将数字逐位转换为long int。
听起来像是你已经理解了它。找到小数点,然后根据需要填充到六位数字或截取六位数字。然后从字符串中删除小数点并转换生成的整数。 – user3386109
建议的方法本身不应对负值或舍入基于第7小数位的最低有效位数。没有填充是必要的 - 你只需要跟踪每个数字的位置值。 – Clifford