我正在从文件中读取令牌,它会完美地输入char指针 在文件中,但在将其发送到此功能后:
double CharToDouble(char *ptemp)
{
if(ptemp != NULL)
{
if(ptemp[0] == '0')
return atof(ptemp);
else
return atof(ptemp)/100;
}
return 0;
}
我在保存此功能结果的双打中获得的值类似于0.6600000000001 0.280000000000000000
和类似的东西,我希望它像在char *中一样ecaxt .. 这是钱的问题,以美分为单位。
任何想法?
答案 0 :(得分:0)
如果是货币,则乘以100并向下舍入为整数,因此不是123.45,而是12345。
注意:Float和Double只能达到一定的精度(机器精度),因为不是每个实数都可以浮点格式编码。
如果您只对正确格式的输出感兴趣,则必须使用正确的printf命令,即
double currency_value = 9.95;
printf("Currency: %.2f", currency_value)
查看“格式字符串”以了解更多信息。 %.2f
表示我想在逗号(f)后面有一个固定位置的浮点数,并且该位置应该是逗号(2)后面的第二个数字。