浮点数二分(一个数开根号)

#include<iostream>
using namespace std;
int main(){
	double x;
	cin>>x;
	double l=0,r=x;
	while(r-l>1e-8){
		double mid=(l+r)/2;
		if(mid*mid>=x)r=mid;
		else l=mid;
	}
	
	cout<<l<<endl;
	return 0;
} 

 

一个浮点数转换为二进制并不是像整那样简单,因为浮点数的二进制表示通常采用科学记法的格式,即“尾”(小部分)+ “指”,称为“IEEE 754 浮点数标准”。这个过程需要将浮点数分解并分别处理: 1. 分解成两个部分:阶码(exponent)和尾(mantissa)。阶码指示了小点的位置以及的大小范围,尾是实际值的字部分。 2. 尾部分通常用一个特定的基(如2)表示,即尾乘以基的幂次。这可能需要进行无限循环或直到达到一定的精度为止。 3. 阶码通过移位和偏移(通常是加127或减127,取决于具体的二进制补码表示)得到最终的二进制形式。 4. 如果原是正常(不是无穷大或NaN),尾通常会在前加上一个1(除非尾一开始就为0)。 如果你想要手动完成这个过程,可以使用Python的标准库,如`struct`模块的`pack`函,或者使用一些第三方库,如`bitstring`。但对于一般用户来说,直接调用内置的`str()`或`format()`函转换为字符串更方便: ```python import struct def float_to_binary(float_num): binary = format(struct.unpack('!f', struct.pack('!f', float_num))[0], '.32b') return binary float_num = 3.14159 binary_str = float_to_binary(float_num) ``` 这样就可以得到一个类似`'001001000010010000000110101101110011001101110011111110110100000000000000000000000000000000000000'`的二进制表示。请注意,实际结果取决于平台使用的浮点数编码规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

invincible_Tang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值