期望结果是3.6,但是实际上是3.0,请问是什么问题?
热门产品 :
USB3.0 HUB控制器:CH634
期望结果是3.6,但是实际上是3.0,请问是什么问题?
您好我感觉是因为360是整形,100也是整形,两个整形的运算还是整形,所以(360/100)相当于3
所以打印出来是3.0
建议将第二行替换成 step=(360.0/100); 再试一试
您好,麻烦说一下你用的是我司哪款MCU,这边可以帮你测试一下
您好,首先你用的两个整型数相除;当整型除以整型时,得到的仍然是整型,只是直接去掉商的小数部分,然后只取整数部分,不考虑四舍五入的问题。故而360/100只会直接保存整数部分即3
其次,您用的是float单精度类型(表示带有小数的实数时有不连续和不精确的特点),是无法得到3.6这个数值的,如果您改成360.0/100,这样得到的数值会是3.59
像3.6这样的数字使用float类型是没办法精确存储的, float所能表示的小数是跳跃的,这些小数也必须能写成2的n次幂相加才可以,比如0.5、0.25、0.125…以及这些数字的和。
如果您想得到精确的数值,建议将step的类型改成double,将算式改成360.0/100即可。