首页 新闻 会员 周边

js怎么实现数值小数点后大于 0 则加 1

0
悬赏园豆:50 [待解决问题]

js怎么实现数值小数点后大于 0 则加 1 ;比如 3.00001 入,其结果为 4。比如这类数3.0000000000000001

今天是愚人节的主页 今天是愚人节 | 初学一级 | 园豆:152
提问于:2020-03-12 17:37
< >
分享
所有回答(6)
0

Math.ceil(x)

jakio6 | 园豆:1318 (小虾三级) | 2020-03-12 18:08

好多方法都试了,都不对呢
正则和String也都试了,都不对

支持(0) 反对(0) 今天是愚人节 | 园豆:152 (初学一级) | 2020-03-12 18:12

@Ymm--: 精度不够吧,读入数的时候小数的部分直接就没了,这样的情况下怎么也做不到

支持(1) 反对(0) jakio6 | 园豆:1318 (小虾三级) | 2020-03-12 19:53
0

先判断是否有小数点,再判断小数点部分是不是大于0
function isDot(num) {
var result = (num.toString()).indexOf(".");
if(result != -1) {
alert("含有小数点");
} else {
alert("不含小数点");
}
}
//获取小数点后值
var num = 123.1234567;
var str = num.toString().split('.');
判断是不是大于0,是的话就加1

风行天下12 | 园豆:3867 (老鸟四级) | 2020-03-12 18:29


数值后面很多0的时候转字符串的时候,小数点后面的就检测不到自动省略了,我太南了

支持(0) 反对(0) 今天是愚人节 | 园豆:152 (初学一级) | 2020-03-13 08:54

@Ymm--: 小数点部分转成整型看不能能不能判断

支持(0) 反对(0) 风行天下12 | 园豆:3867 (老鸟四级) | 2020-03-13 10:15
0

var i = i + 1 -i%1 ;

SoftwareSciencer | 园豆:202 (菜鸟二级) | 2020-03-12 19:48

i = i + 1 - i%1

支持(0) 反对(0) SoftwareSciencer | 园豆:202 (菜鸟二级) | 2020-03-12 19:48

当然了,你这个不能循环的,要不它会一直+1 js 二进制存储数字本身就是有小数的这是不可避免的。

支持(0) 反对(0) SoftwareSciencer | 园豆:202 (菜鸟二级) | 2020-03-12 19:57
0

你这个数超过 double 精度极限,最后的小数部分被丢弃了,实际存进去的就是小数全为0整数,肯定不会加1。靠js自带的小数不可能实现。必须使用科学计算用的高精度小数结构。

coredx | 园豆:678 (小虾三级) | 2020-03-12 20:07

科学计算用的高精度小数结构----怎么处理呀

支持(0) 反对(0) 今天是愚人节 | 园豆:152 (初学一级) | 2020-03-13 09:00

@Ymm--: 我只知道 Java 和专业数学软件有这种结构。js 你去网上找找看吧,我也不清楚。数学底子不好还写不出来这种结构的,我是写不出来。

支持(0) 反对(0) coredx | 园豆:678 (小虾三级) | 2020-03-13 09:29

@coredx:好的,谢啦

支持(0) 反对(0) 今天是愚人节 | 园豆:152 (初学一级) | 2020-03-13 09:31
0
//我就喜欢这种花里胡哨的东西
var a = 3.00000000000
var b = 4.000001
function func(data){
data +=''   //转字符串
if (data.match(/\.0*?[^0]/)){
    return parseInt(data)+1
}else{return parseInt(data)}
}
console.log(func(a))
console.log(func(b))
//记得给好评哦
小小咸鱼YwY | 园豆:3210 (老鸟四级) | 2020-03-12 20:23

救救孩子吧~~~

支持(0) 反对(0) 今天是愚人节 | 园豆:152 (初学一级) | 2020-03-13 08:59

@Ymm--:

//上面那个见状性好像漏了一个补全一下
var a = 3.00000000000
var b = 4.1
function func(data){
data +=''   //转字符串
if (data.match(/\.0*?[^0]/)||data.match(/\.[^0]/)){
    return parseInt(data)+1
}else{return parseInt(data)}
}
console.log(func(a))
console.log(func(b))

支持(0) 反对(0) 小小咸鱼YwY | 园豆:3210 (老鸟四级) | 2020-03-13 12:19
0

$(function () {
var num=4.0000000001
var str=num.toString()
console.log(str)
var str1=str.split('.');
console.log(str1)
if(str1.length>1){
for (var i=0;i<str1[1].length;i++){
var a= str1[1].charAt(i)
console.log(a)
if(a>0){
num=parseInt(str1[0])+1;

            break
        }
}



}
console.log(num)

}
显示:
4.0000000001
 ["4", "0000000001"]
(9)0
1
5

bky-lxm | 园豆:202 (菜鸟二级) | 2020-03-14 11:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册