草庐IT

integer-arithmetic

全部标签

原来你是这样的JAVA--[07]聊聊Integer和BigDecimal

今天来聊聊Java中跟数值处理相关的两个类型Integer和BigDecimal。说起这两个类型,我们肯定都不陌生,但是其中有些容易踩到的坑需要注意避让。Integer整型我们应该每天都会用到,但是每种语言还是有自己的特性。从敬姐刚从.NET转过来的时候踩过的一个坑说起:话说在.NET世界中,数值的基本类型和包装类型是会自动转换的,所以数值比较很自然地就会使用a==b,但是到java这却行不通了,顿时一脸懵。数值比较及自动装箱@TestpublicvoidInterger(){Integerx=127;Integery=127;Integerm=99999;Integern=99999;Sys

c++ - 错误 "requested alignment is not an integer constant"

我在解决GCC问题时遇到问题。我在GCC4.8下体验过它,但不是5.1。看起来它被报道了here和/或here.问题如下:templatestructS{staticconstintALIGN=16;__attribute__((aligned(ALIGN)))intx;};intmain(intargc,char*argv[]){Ss1;Ss2;return0;}和:$g++test.cxx-otest.exetest.cxx:9:41:error:requestedalignmentisnotanintegerconstant__attribute__((aligned(ALIGN

c++ - 找出(在 C++ 中)二进制数是否是另一个的前缀

我需要一个带有这样标题的函数:boolis_prefix(inta,intb,int*c){//...}如果a是,读取为二进制数字字符串,b的前缀,然后将*c设置为b的其余部分(即“b比a多”)并返回true。否则,返回假。假设二进制字符串总是以“1”开头。当然-通过逐位比较很容易做到(左移b直到b==a)。但是有没有更有效的解决方案,无需迭代位?示例:a=100(4),b=1001(9)。现在将*c设置为1。 最佳答案 可以用自己喜欢的"fast"methodtofindthehighestsetbit.让我们调用函数msb()。

c++ - 如何优化打印出两个整数中较大者和较小者之间的差异?

UVAProblemno.10055,HashmattheBraveWarrior,可能是那里最简单的问题。输入由一系列≤2^32的无符号整数对组成(因此强制使用64位整数……)对于每一对,任务是打印出较大整数和较小整数之间的差值。根据thestatistics,最快的解决方案运行时间低于0.01秒。然而,我解决这个问题的所有尝试通常都在0.02秒内运行,随机偏差可能为±0.01秒。我试过:#include#includeusingnamespacestd;intmain(){ios_base::sync_with_stdio(false);cin.tie(nullptr);uint_

c++ - 查找值在 std::integer_sequence 中第一次出现的位置

我想找到一个值在std::integer_sequence中第一次出现的位置。标准库中是否有用于此任务的算法?如果没有,什么是做这件事的好方法?--下面是我的尝试。它有效,但我觉得它不是很优雅;当值不存在时(代码因编译而被注释掉),它也无法产生干净的错误(“未找到值”)。(此外,必须在Find_in_integer_sequence中指定整数类型感觉有些多余,但我认为没有办法解决它。)代码仅供您娱乐,不应作为建议解决方案的起点。#include#include#includenamespacedetail{templatestructFind;templatestructFind_im

c++ - "integer constant is too large for ‘long’ 求最大质因数时键入"

我正在解决Euler项目3:Description:Theprimefactorsof13195are5,7,13and29.Whatisthelargestprimefactorofthenumber600851475143?这是我生成答案的代码。但是我需要一个整数类型来保存600851475143。当我在Mac上的GCC上编译它时,我得到:integerconstantistoolargefor‘long’type".我预计longlong可以轻松持有这个数字。我也试过让它未签名。为什么我的代码不能保存这么小的数字?我该怎么做才能让它发挥作用?#include#includeusi

c++ - int8_t 和 char : converts between pointers to integer types with different sign - but it doesn't

我正在处理一些嵌入式代码,并且正在从头开始编写一些新东西,因此我更愿意坚持使用uint8_t、int8_t等类型。然而,当移植一个函数时:voidfunctionName(char*data)到:voidfunctionName(int8_t*data)在将文字字符串传递给函数时,我收到编译器警告“在指向具有不同符号的整数类型的指针之间转换”。(即调用functionName("putthistextin");时)。现在,我明白了为什么会发生这种情况,并且这些行只是调试,但我想知道人们认为什么是最合适的处理方式,而不是对每个文字字符串进行类型转换。在实践中,我不认为一揽子类型转换比使用

c++ - scanf 与 cin : string as integer processing

我有一个输入字符串“0100”为什么scanf("%i",&n);返回64而cin>>n;给我100?为什么cin以十进制值思考,而scanf以八进制值思考? 最佳答案 Fortheispecifier:  Anynumberofdigits,optionallyprecededbyasign(+or-).Decimaldigitsassumedbydefault(0-9),buta0prefixintroducesoctaldigits(0-7),and0xintroduceshexadecimaldigits(0-f).-sca

c++ - C++ 中的除法

这个问题在这里已经有了答案:Integerdivisionalwayszero[duplicate](1个回答)关闭6年前。我是C++的新手,我尝试了这个简单的代码:#include#includeusingnamespacestd;intmain(){doublea;a=1/6;cout但结果是0。据我了解,double应该与实数一起使用,所以结果不应该是1/6或0.1666666吗?谢谢!

c++ - 警告 : Comparison between signed and unsigned integer expression

我在codepad.org上运行以下代码时出现此错误。“在成员函数‘doubleXchange::getprice(std::string)’中:第87行:警告:有符号和无符号整数表达式之间的比较”这是我的代码:#include#include#includeusingnamespacestd;classXchange{public:Xchange();//doesnothing(?)doublegetprice(stringsymbol);private:vectorstocks;};doubleXchange::getprice(stringsymbol){for(inti=0;i