我怎样才能将钱四舍五入到最接近的美分?

How can I round money to the nearest cent?

所以我正在创建一个小费计算器应用程序,但我很难四舍五入到最接近的美分;这是我想出的一些随机边缘案例

.243 => .25 
.44134242 => .45
.5675235235 => .57
.21 => .21
.2000 => .20
.20001 => .21

本质上,我看的是百分位,如果小数点后有任何数字大于 0,我会将其四舍五入到最接近的分位。以下是我想出的,但有时我会差一分钱

double value = 123.451;
double amount = (int)(value * 100.0) / 100.0;
// Should return 123.46

假设您了解浮点数的特征及其在货币计算中的缺点,是这样的吗?

double amount = Math.ceil(value * 100.0) / 100.0;