2014-07-20 16:03

# 如何计算浮点数的小数位？

I want to check if a float32 has two decimal places or not. My javascript way to do this would look like:

``````step  := 0.01
value := 9.99

if int(value/step) % 1 == 0 {
printf("has two decimal places!")
}
``````

The above example also works. However it will not work when step is incorrect as go then cannot properly cast from float64 to int.

Example:

``````step  := 0.1
value := 9.99

if int(value/step) % 1 == 0 {
printf("has two decimal places!")
}
``````

Compiler Error: `constant 9.99 truncated to integer`

When we use dynamic values it will just return true for every case.

So what is the appropriate way to count decimal places?

#### 图片转代码服务由CSDN问答提供 功能建议

``` ``` step：= 0.01
value：= 9.99

if int（value / step）％1 == 0 {\  n printf（“具有两个小数位！”）
}

上面的示例也适用。 但是，当step不正确时，它将无法正常工作，因为go不能正确地将其从float64强制转换为int。

示例：

step：=  0.1
value：= 9.99

if int（值/步）％1 == 0 {
printf（“有两个小数位！”）
}

\  n 编译器错误：常量9.99被截断为整数

当我们使用动态值时，它只会在每种情况下返回true。

那么计算小数位的适当方法是什么？
``````
` `
``` 点赞 写回答 关注问题 收藏 分享 邀请回答 ```
``` 3条回答 默认 最新 dreinuqm992401 2014-07-20 16:16 已采纳 int value % 1 is always zero! I suggest an alternative way: value := float32(9.99) valuef := value*100 extra := valuef - float32(int(valuef)) if extra < 1e-5 { fmt.Println("has two decimal places!"); } http://play.golang.org/p/LQQ8T6SIY2 Update package main import ( "math" ) func main() { value := float32(9.9990001) println(checkDecimalPlaces(3, value)) } func checkDecimalPlaces(i int, value float32) bool { valuef := value * float32(math.Pow(10.0, float64(i))) println(valuef) extra := valuef - float32(int(valuef)) return extra == 0 } http://play.golang.org/p/jXRhHsCYL- 点赞 打赏 评论 分享 dongyidao1461 2014-07-20 16:08 You have to trick it, add an extra variable: step := 0.1 value := 9.99 steps := value / step if int(steps)%1 == 0 { fmt.Println("has two decimal places!") } Or cast your steps before you convert it to int like: int(float64(value / step)) playground //edit the hacky non-mathematical way is to convert it to a string and split it, example: func NumDecPlaces(v float64) int { s := strconv.FormatFloat(v, 'f', -1, 64) i := strings.IndexByte(s, '.') if i > -1 { return len(s) - i - 1 } return 0 } playground //updated with a minor optimization 点赞 打赏 评论 分享 doubi1928 2019-04-20 00:38 Here's a function to get the decimal portion of a float. Can use len(decimalPortion(n)) to get the number of decimal places. func decimalPortion(n float64) string { decimalPlaces := fmt.Sprintf("%f", n-math.Floor(n)) // produces 0.xxxx0000 decimalPlaces = strings.Replace(decimalPlaces, "0.", "", -1) // remove 0. decimalPlaces = strings.TrimRight(decimalPlaces, "0") // remove trailing 0s return decimalPlaces } 点赞 打赏 评论 分享 报告相同问题？ 提交 关注问题 相关推荐 更多相似问题 如何计算浮点数的小数位？ 2014-07-20 16:03 回答 3 已采纳 int value % 1 is always zero! I suggest an alternative way: value := float32(9.99) valuef := va 怎么得到一个浮点数小数点后的数字位数是多少呢？ 2016-10-10 08:03 回答 4 已采纳 ``` Dim f As Single Dim s As String f = 你的浮点值 s = CStr(f - Int(f)) MsgBox Len(s) ``` 如何判断float有几位小数？ c++ 2019-07-08 20:45 回答 3 已采纳 float和double总不太准，我直接改用了CString作为输入，已经解决了，谢谢。 python浮点数保留两位小数_python float函数字符串转换浮点数 保留位数? 2020-11-24 04:07 weixin_39977934的博客 白衣染霜花int函数能够（1）把符合数学格式的数字型字符串转换成整数（2）把浮点数转换成整数，但是只是简单的取整，而非四舍五入。举例：1 aa = int("124") #Correct2 print "aa = ", aa #result=1243 bb = int(123... Java浮点数如何保留小数？？？ 2021-03-20 15:33 拾忆丶意难的博客 例：输入华氏温度f，计算并输出相应的摄氏温度c。c=5*(f-50)/9+10 import java.util.Scanner; public class practice { public static void main(String[] args) { //write your own codes Scanner input = ... 1025 保留12位小数的浮点数.cpp 2020-04-30 21:07 1025：保留12位小数的浮点数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 27948 通过数: 24399 【题目描述】 读入一个双精度浮点数，保留12位小数，输出这个浮点数。 【输入】 只有一行，一个双精度浮点数。 ...Python分离浮点数的小数位和整数位。 python 2021-07-19 19:16 回答 3 已采纳 #1 a=input('') x,y=a.split ('.') y1='0.'+y print('整数部分是{}，小数部分是{}'.format(x,y1)) #2 a = 12.33 a1 = Java语言怎么判断一个浮点数是不是一个整数呢?怎么判断浮点数的小数是0 开发语言 2020-05-09 14:07 回答 2 已采纳 可以直接用 Integer.parseInt （String.valueOf(num)）看看能不能转成 int 类型。 printf如何去掉浮点数多余的0? 2015-01-18 11:48 回答 3 已采纳 http://baike.baidu.com/link?url=602SYuUGPNeVgp6LYHeEl8NRnTy8T69Ohuq8pakdvsbZZnpzzXs4heLNlizzxnO3wpwg c,c++对输出浮点数小数位数的控制 2019-09-10 16:35 san lolo的博客  在这里汇总一下c,c++对输出浮点数小数位数的控制方法，还会有所补充。 设wei为题目给出输出位数。 1.c,c++  printf("%.*f\n",wei,ans); 2.c++ cout(ios::fixed)(wei); setiosflags(ios::fixed)... python浮点数保留两位小数_python如何保留指定小数点位数？ 2020-11-24 04:07 weixin_39771969的博客 print(format(1.23456, '.2f')) print(format(1.23456, '.3f')) print(format(1.23456, '.4f')) 输出结果：1.23 1.235 1.2346 3、round（）函数 round() 方法返回浮点数x的四舍五入值。 以下是 round() 方法的语法:... 保留浮点数前几位小数 2018-05-16 22:43 keep_forward的博客 用float或者double表示一个浮点数，会碰到数字小数特别多的情况，比如0.324241245325235。但实际这样看着也不方便，实际用的时候也不需要这么高的精度。可以选择只保存前几位小数，比如小数点后3位小数，即1/1000的... 浮点数的运算，数字大小对计算速度有影响吗？ 2016-07-27 16:18 回答 2 已采纳 都是浮点运算，数字大小操作起来速度一样。但是请注意，数字越大，那么尾数的精度越低。 比如你买一个计算器，是8位的，那么如果整数部分是1-9，小数点后可以精确到0.0000001，如果整数部分是100 仅显示一个小数位或不显示浮点数 php 2016-10-07 16:45 回答 2 已采纳 One option is to use round instead of number_format: echo round(2.0, 1); // 2 echo round(2.5, 1); 字符串能不能转换成浮点数？ python 2019-07-07 23:43 回答 1 已采纳 直接float（x） 就可以了，你float（int（x）） 是什么意思？？ Java 设置浮点数的小数位数 2018-09-27 14:40 JennyCqh的博客 double d = 1.3003;  java.text.DecimalFormat dF=new java.text.DecimalFormat("0.000");  System.out.println(dF.format(d));  输出结果:1.300     参考博客：... python浮点数保留两位小数_python保留两位小数 2020-11-20 22:32 weixin_39907713的博客 基础浮点数是用机器上浮点数的本机双精度(64 bit)表示的。提供大约17位的精度和...Python 3.X对于浮点数默认的是提供17位数字的精度。关于单精度和双精度的通俗解释：单精度型和双精度型，其类型说明符为float 单精... C语言计算浮点数的小数位数，屏蔽掉了浮点运算的误差 2014-08-02 23:08 iOS大叔的博客 第一次去计算个 VC++浮点数四舍五入保留两位小数VC++浮点数四舍五入保留两位小数 2016-05-24 02:22 回答 4 已采纳 http://zhidao.baidu.com/link?url=tECI6Q8RqTZLAQfx7m5GKgdj9GTDy5XwIAu7pB_Ch74oF6EAif4TzLgjyFL-6llZBGs 输入一个浮点数，判断小数有几位——C语言代码 2020-05-22 19:25 课程的随堂作业，C语言的，用dev就能运行，萌新代码，勿喷，仅仅帮助不想写作业的朋友方便一下，反正老师也不会仔细检查的 没有解决我的问题, 去提问```
``` 点击登录 提问题 ◇ 欢迎建议意见 ◇ 回答问题能得到什么 ◇ 如何写高质量的提问和回答 ◇ 问答平台结题规则说明 加急问题 ¥100 namenode和datanode无法启动解决方案 ¥100 谷歌翻译api有没有破解办法，是不是唯一解决办法就是收费 ¥100 谁知道哪个app上面可以获取自己想要的链接。或者是购买链接 ¥100 求不定方程式整数解问题。 ¥100 yii2的advance版本使用yii2-rest-rbac的示例，认证方式oauth2 ¥100 使用https后，net4.6编译的web应用的oracle连接池异常，不能持续保持连接。但是在普通http协议下，oracle连接池是工作正常的，与oracle服务端的连接能持续。 ¥100 萌新求问会的朋友跑通这两个数据集 ¥100 高通平台camx相机驱动 ¥66 添加内容使得出的非0变量个数最少（即xi尽可能为0）） ¥50 如何设计控制汽车运动的程序 ```
``` ```
``` window.csdn.sideToolbar = { options: { afterFinished: function () { setTimeout(function () { var helphtml = '<a class="option-box" data-type="help" href="https://ask.csdn.net/questions/7441224" target="_blank">'+'<img src="https://g.csdnimg.cn/side-toolbar/2.5/images/bangzhucopy.png" alt="" srcset="">'+ '<span class="show-txt">帮助</span></a>'; \$('.csdn-side-toolbar > a:last').before(helphtml); }, 300); }, contentEl: document.getElementsByClassName('floor')[0] } } ```