我想要的是一种将double转换为使用half-up方法进行舍入的字符串的方法 - 即如果要舍入的小数为5,则它总是向上舍入到前一个数字.这是在大多数情况下舍入大多数人所期望的标准方法.
我也希望只显示有效数字 - 即不应该有任何尾随零.
我知道这样做的一种方法是使用该String.format
方法:
String.format("%.5g%n", 0.912385);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91239
Run Code Online (Sandbox Code Playgroud)
这很好,但它总是显示5位小数的数字,即使它们不重要:
String.format("%.5g%n", 0.912300);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91230
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用DecimalFormatter
:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91238
Run Code Online (Sandbox Code Playgroud)
但是你可以看到这使用了半均匀舍入.也就是说,如果前一个数字是偶数,它将向下舍入.我想要的是这个:
0.912385 -> 0.91239
0.912300 -> 0.9123
Run Code Online (Sandbox Code Playgroud)
在Java中实现这一目标的最佳方法是什么?
我想检查一个string
只包含数字.我用过这个:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
Run Code Online (Sandbox Code Playgroud)
但意识到它也允许+
和-
.基本上,我想确保一个input
只包含数字而不包含其他字符.由于+100
和-5
都是数字,isNaN()
不是正确的方法.也许我需要一个正则表达式?有小费吗?
R中有一个选项可以控制数字显示.例如:
options(digits=10)
Run Code Online (Sandbox Code Playgroud)
应该给计算结果10位数,直到R会话结束.在R的帮助文件中,digits参数的定义如下:
digits:控制打印数值时要打印的位数.这只是一个建议.有效值为1 ... 22,默认值为7
所以,它说这只是一个建议.如果我想总是显示10位数而不是更多或更少,该怎么办?
我的第二个问题是,如果我想显示超过22位数,即更精确的计算如100位数,该怎么办?是否可以使用基础R,或者我是否需要额外的包/功能?
编辑:感谢jmoy的建议,我尝试了sprintf("%.100f",pi)
它给了
[1] "3.1415926535897931159979634685441851615905761718750000000000000000000000000000000000000000000000000000"
Run Code Online (Sandbox Code Playgroud)
它有48位小数.这是R可以处理的最大限制吗?
正如我的帖子标题所示,我想知道有多少位数var number
.例如:如果number = 15;
我的函数应该返回2
.目前,它看起来像这样:
function getlength(number) {
return number.toString().length();
}
Run Code Online (Sandbox Code Playgroud)
但Safari表示,由于TypeError
:
'2' is not a function (evaluating 'number.toString().length()')
Run Code Online (Sandbox Code Playgroud)
如您所见,'2'
实际上是正确的解决方案.但为什么呢not a function
?
我有一个以数字开头的字符串(从0到9)我知道我可以"或"使用startswith()测试10个案例但是可能有一个更整洁的解决方案
所以不要写作
if (string.startswith('0') || string.startswith('2') ||
string.startswith('3') || string.startswith('4') ||
string.startswith('5') || string.startswith('6') ||
string.startswith('7') || string.startswith('8') ||
string.startswith('9')):
#do something
Run Code Online (Sandbox Code Playgroud)
有更聪明/更有效的方式吗?
如果我想找到数字的数字之和,即:
932
14
,即(9 + 3 + 2)
这样做的最快方法是什么?
我本能地做了:
sum(int(digit) for digit in str(number))
Run Code Online (Sandbox Code Playgroud)
我在网上找到了这个:
sum(map(int, str(number)))
Run Code Online (Sandbox Code Playgroud)
哪种方法最适合速度,还有其他方法更快吗?
可能重复:
JavaScript等效于printf/string.format
如何使用JavaScript创建Zerofilled值?
我在变量中有一个数字:
var number = 5;
Run Code Online (Sandbox Code Playgroud)
我需要将该数字输出为05:
alert(number); // I want the alert to display 05, rather than 5.
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我可以手动检查数字并将其作为字符串添加0,但我希望有一个JS功能可以做到吗?
找到正整数位数的最佳方法是什么?
我找到了这3种基本方法:
转换为字符串
String s = new Integer(t).toString();
int len = s.length();
Run Code Online (Sandbox Code Playgroud)for循环
for(long long int temp = number; temp >= 1;)
{
temp/=10;
decimalPlaces++;
}
Run Code Online (Sandbox Code Playgroud)对数计算
digits = floor( log10( number ) ) + 1;
Run Code Online (Sandbox Code Playgroud)你可以在大多数语言中计算log10(x)= ln(x)/ ln(10).
首先我认为字符串方法是最脏的,但我想的越多,我认为这是最快的方法.或者是吗?
到目前为止这是我的代码:
var n = 123456789;
var d = n.toString().length;
var digits = [];
var squaredDigits = [];
for (i = d; i >= 1; i--) {
var j = k / 10;
var r = (n % k / j) - 0.5;
var k = Math.pow(10, i);
var result = r.toFixed();
digits.push(result);
}
console.log(digits);
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的代码时,我得到了这个: [9, 1, 2, 3, 4, 5, 6, 7, 8]
如果有人能看到问题或找到更好的解决方案,我将非常感激!