values smaller than 0.001 sat/B can't be represented by CFeeRate, but they are not rejected.

```
./src/bitcoin-cli -named sendtoaddress address=bcrt1qwkmhqum095zau5rf2velq55cq938vrd7uw8m4r amount=1.23 fee_rate=0.0009

error code: -6
error message:
Fee rate (0.000 sat/vB) is lower than the minimum fee rate setting (1.000 sat/vB)
```

```
./src/bitcoin-cli -named sendtoaddress address=bcrt1qwkmhqum095zau5rf2velq55cq938vrd7uw8m4r amount=1.23 fee_rate=0.000000000009

error code: -3
error message:
Invalid amount

{
    
    TestArgsManager args1;
    args1.ForceSetArg("-datadir", m_path_root.string());
    args1.LockSettings([&](util::Settings& settings) { settings.rw_settings["name"] = "value"; });
    args1.WriteSettingsFile();
    
    TestArgsManager args2;
    args2.ForceSetArg("-datadir", m_path_root.string());
    args2.ReadSettingsFile();
    args2.LockSettings([&](util::Settings& settings) { BOOST_CHECK_EQUAL(settings.rw_settings["name"].get_str(), "value"); });
    
    {
        ASSERT_DEBUG_LOG("Failed renaming settings file");
        fs::remove(args1.GetDataDirPath() / "settings.json");
        fs::create_directory(args1.GetDataDirPath() / "settings.json");
        args2.WriteSettingsFile();
        fs::remove(args1.GetDataDirPath() / "settings.json");
    }
}
BOOST_AUTO_TEST_CASE(util_FormatMoney)