将char *转换为double,在该点后最多2个位置

时间:2010-11-29 04:18:26

标签: c char double

我正在从文件中读取令牌,它会完美地输入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 .. 这是钱的问题,以美分为单位。

任何想法?

1 个答案:

答案 0 :(得分:0)

如果是货币,则乘以100并向下舍入为整数,因此不是123.45,而是12345。

注意:Float和Double只能达到一定的精度(机器精度),因为不是每个实数都可以浮点格式编码。

如果您只对正确格式的输出感兴趣,则必须使用正确的printf命令,即

double currency_value = 9.95;
printf("Currency: %.2f", currency_value)

查看“格式字符串”以了解更多信息。 %.2f表示我想在逗号(f)后面有一个固定位置的浮点数,并且该位置应该是逗号(2)后面的第二个数字。