このスニペットのようなもので十分です。
PyObject *dict, *value, *result, *fmt;
dict = PyDict_New();
if (!dict)
return NULL;
value = PyFloat_FromDouble(54.23345);
if (!value) {
PY_DECREF(dict);
return NULL;
}
if (PyDict_SetItemString(dict, "Foo", value) < 0) {
Py_DECREF(value);
Py_DECREF(dict);
return NULL;
}
Py_DECREF(value);
fmt = PyUnicode_FromString("Foo = {Foo:.3f}");
if (!fmt) {
Py_DECREF(dict);
return NULL;
}
result = PyObject_CallMethodObjArgs(fmt, "format_map", dict, NULL);
Py_DECREF(fmt);
Py_DECREF(dict);
return result;
ご覧のとおり、これは面倒なので、できる限り Python で行うのが最善です。