浮动到Int转换

not*_*ull -2 c c++

我正在读"浮动"数字,最多2位小数,如下所示:

122
122.3
122.34
Run Code Online (Sandbox Code Playgroud)

并需要通过乘以将它们转换为整数值(想象存储美元/美分)

int i;
double d;

scanf( "%lf", &d );

i = d * 100;
Run Code Online (Sandbox Code Playgroud)

例如18.56将被转化为1855

有没有办法将值读取为double并将其正确转换为int?

TIA

use*_*751 5

转换为带舍入的int的最简单方法:

i = (int)floor(d * 100 + 0.5);
Run Code Online (Sandbox Code Playgroud)

如果您的号码总是积极的:

i = (int)(d * 100 + 0.5);
Run Code Online (Sandbox Code Playgroud)

1.565和1.575之间的值将变为157. 2.135和2.145之间的值将变为214.

这样,如果你有一个像1.56999的数字,它将变为157.

这并不是"解决精确损失" - 无论这意味着什么.它只是四舍五入.

如果一个值恰好在两个数字之间(例如d为1.125),那么您可能会得到意想不到的结果.在这种情况下,所有数字只有两位小数,所以这不是问题.如果数字不限于更多的小数位,您需要更仔细地考虑如何处理像1.125这样的数字.