I'm passing a tx and feeRate param to fundrawtransaction which gives me back the hex of the signed tx and its fee. I'm not passing a conf_target or estimate_mode. I pass the resulting hex to decoderawtransaction to get the size/vsize of the tx.
I'm trying to check the actual fee rate of the signed tx by calculating fee * 1000 / vsize
but it doesn't seem to match the rate that I passed in as a parameter.
I've tried with a few different values but the actual rate always seems to come out higher than the requested rate by a factor of about 1.59, give or take a little bit.
So am I calculating the observed rate improperly? Is it even possible to have the resulting fee rate exactly match the one provided by the feeRate parameter?