社区
C++ Builder
帖子详情
怎样对 float, double 变量作 4 舍 5 入?
Highway2000
2000-09-06 10:15:00
比如 float a = 123.456789
希望精确到允许范围内的任意位该怎么作?比如 2 位小数, 3 位小数,整数等。
...全文
208
6
打赏
收藏
怎样对 float, double 变量作 4 舍 5 入?
比如 float a = 123.456789 希望精确到允许范围内的任意位该怎么作?比如 2 位小数, 3 位小数,整数等。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
potatopro
2000-09-07
打赏
举报
回复
用HIGHWAY的方法大数据时的处理:
1.先减去整数部分,处理完小数再加回去不就可以了?不过精度不能太高(可精确到lg2^32-1),否则仍然有溢出。
2.若整数部分已超过int范围,或需要更精确,可以分别将整数和小数分成(lg2^32-1)位一段一段,分别处理,我想可用递归实现。
临时想的,不知对不对。
SCUM
2000-09-07
打赏
举报
回复
《电脑编程技巧与维护》99年好像有一篇文章专门讲高位数计算的,我查一查,给你
寄过去。
Highway2000
2000-09-06
打赏
举报
回复
To wilbur:
我试了你的代码,基本可以用,但是大数据会出错,比如 123456789123.1234556 这样的,
该怎么办呢?
Wilbur
2000-09-06
打赏
举报
回复
首先将 a 乘上 10 的 (n) 次方(n为你要保留的小数位), 然后加上 0.5, 最后除 10 的 (n)次方. 中间利用整数和浮点数的转换.
float round(float fValue/*原始值*/, int n/*位数*/)
{
int cc = 1;
for(int i = 1; i < n + 1; ++i) {
cc *= 10;
}
fValue *= cc; /*放大*/
fValue += 0.5; /*四舍五入的计算*/
int iTmp = fValue; /*舍弃 n 位小数以后的数据*/
fValue = (float)iTmp / (float)cc; /*还原*/
return fValue;
}
Wilbur
2000-09-06
打赏
举报
回复
当然了, int 的取值范围是(–2147483647, 2147483647), 而 float 的范围是(1.175494351e–38F, 3.402823466e+38F)
如果你的要求比较特殊(无数位限制的计算), 最好将其转化为字符串处理.
Hank
2000-09-06
打赏
举报
回复
用Format()函数
bool、int、
float
、
double
变量
与0值的比较
bool、int、
float
、
double
变量
与0值的比较
double
float
比较大小——个人通俗易懂的理解
float
不是32位嘛,算到第33位时候是0就
舍
掉,是1的话就进位到第32位——但如果32位是0,33位是1,要进位然后
float
这个数据第32就变成了1 但如果这个数据是
double
类型,位数是64位,他的32位还是0,33位还是1.他的取
舍
发生在64,65位。 这时候比较的话,就是
float
和
double
的前31位数都相同,但32位不同,比较32位谁大谁小 应该就是有的数据,
float
进位了就比
double
的大,但
舍
位了就比
double
小 ...
float
、
double
浮点型
变量
精度缺失原因
由于对
float
或
double
的使用不当,可能会出现精度丢失的问题。问题大概情况可以通过如下代码理解: public class
Float
Double
Test { public static void main(String[] args) {
float
f = 20014999;
double
d = f;
double
d2 = 20014999; ...
4.3
float
、
double
类型介绍
C语言学习栏目目录 目录 4.1 int类型介绍 4.2 char类型介绍 4.3
float
、
double
类型介绍 4.4 小结及其他数据类型简单介绍 4.5 类型大小 各种整数类型对大多数软件开发项目而言够用了。然而,面向金融和数学的程序经常使用浮点数。C语言中的浮点类型有
float
、
double
和long
double
类型。它们与FORTRAN和Pascal中的r...
java
float
的精度_java中
float
和
double
精度问题
背景在java中
float
赋值给
double
,会产生精度问题。
float
a = 2.1f;
double
b = 3.3;b = a;System.out.println(b);输出为2.0999999046325684。小数的二进制表示问题首先我们要搞清楚下面两个问题:十进制整数如何转化为二进制数算法很简单。举个例子,11表示成二进制数:11/2=5 余 15/2=2 余 12/2=...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章