c语言中负浮点数取整,将负浮点数取整为浮点数

你说“我希望打印的结果是浮点数而不是字符串”和“结果返回一个负幂浮点数,我希望保留十进制格式作为字符串”。但是你不能这样做,因为你无法控制afloat的内部表示:它们都是以科学记数法的二进制形式存储的。有关详细信息,请参阅维基百科的文章floating-point numbers。在

所以你做不做并不重要

v = 0.00000048

或者

v = 4.8e-07

这两种说法具有相同的效果。在

请注意,许多以十进制形式结束的小数在以二进制形式写入时可能会重复出现。当以二进制形式写入时,唯一终止的分数是n / (2 ** b)的形式,其中n和b是整数。因此,当一个看起来像2的二进制数被转换成无害的2时,它也不会终止。(请参阅Wiki链接以获得更完整的解释)。由于这个问题,通常不取整浮点数直到完成所有计算。在

如果你把一个字符串转换成浮点数,然后再把它从十进制转换成二进制,然后再转换回来。因此,在试图“清理”一个数字时不应使用这样的操作,因为在每个转换步骤中可能会出现舍入错误。在

当然,有时您需要对您将要继续计算的float应用舍入,但如果是这样,您应该谨慎行事,并确保您确实了解您对数据所做的操作。在

。。。在

你发布的代码还有一些奇怪的地方。在

math = 0 + (1-0) * (1-math.cos(theta))**5

首先,您应该使用导入的模块名作为变量名。在上面的语句执行之后,math现在指的是计算的结果,而不是数学模块,因此如果您试图执行x = math.cos(0.5),您将得到一个错误。类似地,不要使用int、str、list等作为变量名。在

其次,0 + (1-0) *实际上是无用的。因此,上述声明可以改写为

result = (1 - math.cos(theta)) ** 5

整个代码片段就会变成#! /usr/bin/env python

import math

theta = 0.33161255787892263

result = (1 - math.cos(theta)) ** 5

print round(result, 8)

print("{0:.8f}".format(result))

输出

^{pr2}$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值