- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用来执行代码的秒表无缘无故四舍五入到一位有效数字。
FormTime
是从 FORM
手动定义的我已将其从 FORM=[[1, 1, 0, 0, 0],
缩减为只包括用于调试目的的时间
FORM=[[1], [1.875], [2.25], [4.562], [5.438]]
stopwatch
定义如下;
import datetime
from math import floor
a = datetime.datetime.now()
while True:
b = datetime.datetime.now()
c = (b - a)
roundMicro = floor(c.microseconds/1e3)
stopwatch = float(str(c.seconds)+'.'+str(roundMicro))
...
stopwatch
在循环输出中运行;
>>> stopwatch
0.0
...
0.123
...
0.2
例如这里是它打算执行的时间 (FormTime
) 与它实际执行的时间 (Ex
这只是 stopwatch
)
count = 0
a = datetime.datetime.now()
while True:
b = datetime.datetime.now()
c = (b - a)
roundMicro = floor(c.microseconds/1e3)
stopwatch = float(str(c.seconds)+'.'+str(roundMicro))
if FORM[count][0]<=stopwatch:
print(f'FormTime = {FORM[count][0]}', end="")
print(f'{" "*int(7-len(str(FORM[count][0])))}', end="") #Just decorative spacing in terminal
print(f'Ex ≈ {stopwatch}') #Ex = Executed @
count+=1
返回;
FormTime = 1 Ex ≈ 1.0
FormTime = 1.875 Ex ≈ 1.9
FormTime = 2.25 Ex ≈ 2.3
FormTime = 4.562 Ex ≈ 4.6
FormTime = 5.438 Ex ≈ 5.5
知道为什么它在 stopwatch
= 一位有效数字时执行吗?
或者为什么它是四舍五入的?
Exception has occurred: IndexError list index out of range, line 21
这将在演示结束时发生最佳答案
roundMicro = floor(c.microseconds/1e3)
stopwatch = float(str(c.seconds)+'.'+str(roundMicro))
这两行可能不是您所期望的。假设 c.microseconds == 3000
,您将得到 roundMicro = 3
并以 1.3
结尾,而它应该是 1.003
.
除非您正在学习数学舍入,否则在这里没有必要重新发明轮子。使用格式字符串来获得所需的精度(以及可选的布局):
stopwatch = "{:.3f}".format(c.seconds + c.microseconds * 1e-6)
# => 1.003
如果您需要将截断后的值作为数字,您仍然可以调用 float(stopwatch)
来转换字符串。
关于python - 为什么我的小数点四舍五入到一位有效数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66097983/
如何在 C++ 中进行涉及有效数字的数学运算?我希望它能正确处理化学和物理实验的测量数据。一个例子:65/5 = 10。我需要去掉不需要的小数位并将一些数字替换为 0。 谢谢! 最佳答案 这应该可以满
这个任务看起来很简单 - 在输入时我得到测试数量 (numOfTests),然后是两个数字 (downBorder, upBorder) 和我必须找出这些数字(downBorder、upBorder)
如果我有 double (234.004223) 等,我想在 C# 中将其四舍五入为 x 位有效数字。 到目前为止,我只能找到舍入到 x 位小数的方法,但是如果数字中有任何 0,这只会删除精度。 例如
我是一名优秀的程序员,十分优秀!