IT |
ITmedia 総合記事一覧 |
[ITmedia ビジネスオンライン] 「ブラックサンダー」フラッペ再販 ファミマ歴代1位、昨年は2週間で190万杯 |
https://www.itmedia.co.jp/business/articles/2306/06/news140.html
|
itmedia |
2023-06-06 13:38:00 |
IT |
ITmedia 総合記事一覧 |
[ITmedia ビジネスオンライン] 「脱コロナ」で増えた出社頻度 約3割が「身体の不調」「仕事量の増加」を実感 |
https://www.itmedia.co.jp/business/articles/2306/06/news138.html
|
itmedia |
2023-06-06 13:24:00 |
IT |
ITmedia 総合記事一覧 |
[ITmedia News] Spotify、従業員の約2%(約200人)をレイオフ Podcast部門で |
https://www.itmedia.co.jp/news/articles/2306/06/news141.html
|
itmedianewsspotify |
2023-06-06 13:21:00 |
IT |
ITmedia 総合記事一覧 |
[ITmedia PC USER] レノボ、オンライン会議に適したMicrosoft Teams認定の27型液晶ディスプレイ |
https://www.itmedia.co.jp/pcuser/articles/2306/06/news139.html
|
itmediapcuser |
2023-06-06 13:09:00 |
Ruby |
Rubyタグが付けられた新着投稿 - Qiita |
Ruby silver 模擬問題解説8 |
https://qiita.com/saucybeaver26/items/0474f2a8eeed9f0ff088
|
ioseekoffsetwh |
2023-06-06 13:57:02 |
Ruby |
Rubyタグが付けられた新着投稿 - Qiita |
rubyの二重ハッシュ |
https://qiita.com/naomit/items/45684c1d1422117d2204
|
profilenameemauserprofile |
2023-06-06 13:28:03 |
Linux |
Ubuntuタグが付けられた新着投稿 - Qiita |
C# でリアクティブプログラミングを自作してみる:Select と Where オペレーター |
https://qiita.com/fsdg-adachi_h/items/01018ab1e0d3e71df9bd
|
fsdgadachih |
2023-06-06 13:42:39 |
Linux |
Ubuntuタグが付けられた新着投稿 - Qiita |
ubuntu22.04上ngrok |
https://qiita.com/engishoma/items/b5e7f9be565346ce72e2
|
ngrok |
2023-06-06 13:03:52 |
Docker |
dockerタグが付けられた新着投稿 - Qiita |
ubuntu22.04上ngrok |
https://qiita.com/engishoma/items/b5e7f9be565346ce72e2
|
ngrok |
2023-06-06 13:03:52 |
Azure |
Azureタグが付けられた新着投稿 - Qiita |
【Azure OpenAI】プライベートエンドポイントを設定したときのメモ |
https://qiita.com/reiku19753/items/7f4bd208265c761c3ff0
|
azureopenai |
2023-06-06 13:01:51 |
技術ブログ |
Developers.IO |
AWS LambdaでRuby3.2がサポートされました |
https://dev.classmethod.jp/articles/aws-lambda-now-support-ruby-3-2-runtime/
|
awslambda |
2023-06-06 04:43:36 |
技術ブログ |
Developers.IO |
【レポート】意思決定インテリジェンスの基礎、意思決定支援とAuto Insights #alteryx23 |
https://dev.classmethod.jp/articles/report-alteryx-inspire2023-decision-intelligence/
|
alteryx |
2023-06-06 04:09:19 |
海外TECH |
DEV Community |
Flutter vs. React Native: Which is the best choice for your next mobile project? |
https://dev.to/yatendra2001/flutter-vs-react-native-which-is-the-best-choice-for-your-next-mobile-project-45c3
|
Flutter vs React Native Which is the best choice for your next mobile project Flutter and React Native are both popular frameworks for building mobile applications Both have their own set of pros and cons and choosing the best one for your next project can be a tough decision In this blog we will compare Flutter and React Native and help you determine which one is the best choice for your next mobile project So what s Flutter Flutter is a relatively new framework for mobile development but it has gained popularity in recent years It is an open source framework developed by Google and is based on the Dart programming language Flutter uses a reactive programming model which makes it easy to build high performance responsive and animated user interfaces The framework also provides a rich set of customizable widgets that can be used to create beautiful and unique designs and what s React Native React Native on the other hand is an open source framework developed by Facebook and is based on JavaScript It uses a similar approach to building user interfaces as React which is a popular JavaScript library for building web applications React Native allows developers to build mobile apps that look and feel like native apps but with the flexibility and power of JavaScript App Performance ComparisonWhen it comes to performance Flutter has an edge over React Native The reactive programming model used by Flutter makes it easier to create high performance apps that run smoothly on both iOS and Android React Native on the other hand relies on the JavaScript bridge to communicate with native components which can sometimes lead to performance issues Faster Development Time in FlutterAnother advantage of Flutter is its fast development time The framework s hot reload feature allows developers to see the changes they make to the code instantly without having to rebuild the entire app This feature can save a lot of time and make the development process more efficient React Native has a wider range of Third Party LibraryReact Native on the other hand has a larger community and a wider range of third party libraries and modules available This means that developers can find solutions to common problems more easily and can also take advantage of pre built components to speed up their development process Which framework provides a smaller App size In terms of app size React Native tends to have a larger app size compared to Flutter React Native uses JavaScript which requires a JavaScript engine to be bundled with the app which increases the app size On the other hand Flutter does not have this issue as it uses Dart a programming language that does not require a separate engine to be bundled Create a Simple Button in Flutter and React NativeFirst here s an example of how to create a simple button in Flutter import package flutter material dart void main runApp MyApp class MyApp extends StatelessWidget override Widget build BuildContext context return MaterialApp home Scaffold body Center child RaisedButton onPressed print Button pressed child Text Press me In this example we import the material dart package which provides a set of pre built widgets that are styled according to the Material Design guidelines We create a StatelessWidget called MyApp which is the root widget of our app In this build method we use the Scaffold widget to create a basic layout and inside it we use a Center widget to centre our button The RaisedButton widget is one of the pre built widgets that are provided by the material dart package It s a button that raises when pressed and we can customize its appearance and behaviour by passing various arguments to the constructor Now let s see how to create the same button in React Native import React useState from react import StyleSheet Text View TouchableOpacity from react native export default function App const buttonText setButtonText useState Press me return lt View style styles container gt lt TouchableOpacity style styles button onPress gt console log Button pressed setButtonText Pressed gt lt Text style styles buttonText gt buttonText lt Text gt lt TouchableOpacity gt lt View gt const styles StyleSheet create container flex justifyContent center alignItems center button backgroundColor CAF padding borderRadius buttonText fontSize color white In this example we import the react and react native packages which provide the basic building blocks for creating React Native apps We create a functional component called App which returns a JSX element that represents the layout of our app We use the View and Text components to create a container and a label for our button respectively The TouchableOpacity component is a special component provided by React Native that can be used to create buttons that respond to touch events We can customize the appearance and behaviour of our button by passing various styles to the components using the StyleSheet module As you can see both frameworks use a similar approach to creating user interfaces but the syntax and the specific widgets and components used are different Flutter s widgets are built using the Dart programming language whereas React Native s components are built using JavaScript What in terms of the Job Market In terms of the job market both frameworks are widely used and there is a high demand for developers who are proficient in either framework According to a recent survey by StackOverflow both Flutter and React Native are among the top most loved frameworks libraries and technologies among developers ConclusionIn conclusion both Flutter and React Native are great frameworks for building mobile applications Flutter is a newer framework that is gaining popularity due to its fast development time high performance and beautiful widgets React Native on the other hand is a more established framework that has a larger community and a wider range of third party libraries available The best choice for your next mobile project will depend on your specific needs and requirements Both Flutter and React Native have their own set of pros and cons and the best choice for your next mobile project will depend on your specific needs and requirements Consider factors such as performance development time and community support when making your decision Before we go If you ve come this far thanks a lot for reading Let s chat on top of it you can reach me on LinkedIn or Twitter Ciao |
2023-06-06 04:30:00 |
海外TECH |
DEV Community |
13 Powerful Python Snippets To Automate Tasks |
https://dev.to/scofieldidehen/13-powerful-python-snippets-to-automate-tasks-10c1
|
Powerful Python Snippets To Automate TasksPython a versatile programming language provides various functionalities and libraries to automate tasks effectively In this article we will explore advanced Python snippets that can automate cool and useful tasks enabling you to save valuable time and effort From automating Google search results to retrieving Wi Fi passwords downloading YouTube videos and more these code snippets will empower you to accomplish tasks seamlessly Let s dive into the world of automation with Python Automating Google Search Resultsfrom googlesearch import searchquery Medium com for result in search query num stop pause print result This snippet utilizes the googlesearch library to fetch Google search results Provide a query and the snippet will return the top search results Speed Testing with Pythonfrom speedtest import Speedtesttest Speedtest Download Speedprint test download Upload Speedprint test upload Ping testserver names test get servers server names print test results ping Using the speedtest library this snippet measures the download speed upload speed and ping of your internet connection Sending Emails with Attachmentsimport smtplib sslfrom email import encodersfrom email mime base import MIMEBasefrom email mime multipart import MIMEMultipartfrom email mime text import MIMETextsender email sender gmail com password xxxxxxxx receiver address receiver gmail com body This is a test Python email message MIMEMultipart message From sender gmail com message To receiver gmail com message Subject Python Mail message Bcc receiver gmail com message attach MIMEText body plain filename excel xlsx with open filename rb as attachment part MIMEBase application octet stream part set payload attachment read encoders encode base part print Email Sent This snippet demonstrates sending emails with attachments using the smtplib and email libraries It allows you to compose and send emails programmatically Converting PDF to Imagesimport fitzfilename test pdf pdf fitz open filename for page in pdf img page get pixmap alpha False img writePNG page i png page number With the help of the fitz library this snippet converts each page of a PDF file into individual image files Transforming Text into Artfrom art import textart tprint artprint textart default tprint Python font block chr ignore True print art coffee The art library empowers this snippet to convert plain text into artistic representations such as ASCII or stylized text Retrieving File Sizeimport osfile path excel xlsx size os stat file path filesize size st sizeprint filesize bytes bytesBy utilizing the os library this snippet retrieves the size of a file in bytes providing valuable information for file management and analysis Obtaining Wi Fi Passwordsimport subprocessnetwork subprocess check output netsh wlan show profiles decode utf split n profiles i split for i in network if All User Profile in i for profile in profiles results subprocess check output netsh wlan show profile profile key clear decode utf split n results net split for net in results if Key Content in net print lt lt format profile results This snippet uses the subprocess library to retrieve saved Wi Fi passwords on your computer simplifying network management URL Shorteningfrom pyshorteners import Shortenerlink s Shortener shortened url s tinyurl short link Getting IP Addressimport sockets socket socket socket AF INET socket SOCK DGRAM s connect ip addr s getsockname s close print ip addr Using the pyshorteners library this snippet shortens long URLs into more compact and shareable versions Website Screenshottingfrom selenium import webdriverimport timedriver webdriver Chrome chromedriver exe driver maximize window driver get time sleep driver save screenshot shot jpg With the selenium library this snippet captures screenshots of websites enabling automated website testing monitoring or documentation Unzipping Filesimport zipfileunzip zipfile ZipFile filename zip unzip extractall This snippet uses the zipfile library to extract files and folders from a compressed zip file Downloading YouTube Videosimport pytubelink Youtube video url here youtube pytube YouTube link video youtube streams get highest resolution video download orvideo download save location Utilizing the pytube library this snippet lets you download YouTube videos in the highest resolution or to a specified location Extracting Exif Data from Photosimport PIL Imageimport PIL ExifTagsimg PIL Image open img png exif PIL ExifTags TAGS key value for key value in img getexif items if key in PIL ExifTags TAGS print exif With the help of the PIL Python Imaging Library this snippet extracts Exif metadata from images providing information about camera settings and more How To Run a Python FileTo run a Python file that contains the provided code snippet on the terminal follow these step by step instructions Open a text editor or an Integrated Development Environment IDE and create a new file Copy and paste the code snippet into the newly created file Save the file with a py extension such as exif extractor py in a location of your choice Open a terminal or command prompt on your computer Navigate to the directory where you saved the Python file using the cd command For example if the file is saved on the desktop you can use the following command cd DesktopOnce you are in the correct directory you can run the Python file by executing the following command in the terminal python exif extractor pyThis assumes that you have Python installed on your system and the python command is configured in your system s PATH variable Press Enter to execute the command The code will be executed and if there are no errors the output containing the extracted Exif data from the provided image file img png will be displayed in the terminal Before running the code ensure you have installed the necessary dependencies such as the PIL library You can install the required libraries by using the pip package manager For example to install the PIL library you can execute the following command in the terminal ConclusionYou can easily automate tasks by incorporating these powerful Python snippets into your projects From fetching search results measuring network speed sending emails and converting file formats these code snippets will significantly enhance your productivity Experiment with these snippets and explore the possibilities of automation using Python Start automating the cool stuff today and enjoy the benefits of streamlined workflows and increased efficiency Happy coding If you discover this publish thrilling discover extra thrilling posts like this on Learnhub Blog we write a lot of tech related topics from Cloud computing to Frontend Dev Cybersecurity AI and Blockchain Take a look at How to Build Offline Web Applications Resources Essential Python Extensions for Visual Studio Code Using Python for Web Scraping and Data Extraction Getting Started with Python |
2023-06-06 04:09:16 |
海外TECH |
DEV Community |
Vencendo os números de ponto flutuante: um guia de sobrevivência |
https://dev.to/leandronsp/vencendo-os-numeros-de-ponto-flutuante-um-guia-de-sobrevivencia-4n7n
|
Vencendo os números de ponto flutuante um guia de sobrevivência TL DRSe quer poupar tempo e ir direto ao assunto para cálculos precisos prefira decimais de precisão arbitrária ou equivalentes como BigDecimal em vez de números de ponto flutuante Além disso evite arredondamentos desnecessários Quando necessário limite o arredondamento apenas na etapa final para manter o máximo de precisão possível Se vocêtásem tempo pode parar por aqui pois estas dicas jásão suficientes para a maioria das pessoasMas se vocêtem curiosidade em entender mais sobre este assunto sugiro continuar nesta viagem aos números de ponto flutuante SumárioPrólogoFirst things firstBits não são suficientesBits e inteirosBits e outros números reaisRepresentação de ponto fixoRepresentação de ponto flutuanteProblemas e padrõesTipos de dados de ponto flutuanteProblemas de ponto flutuante na práticaDecimais ao resgateCuidado com o arredondamentoDecimais em outras tecnologiasConclusãoReferências PrólogoAh sim números de ponto flutuante Essas coisinhas que frequentemente aparecem em conteúdos técnicos cheios de notações científicas e explicações complexas Équase certo que toda pessoa que estáenvolvida com software játenha se deparado com a noção de que trabalhar com números de ponto flutuante pode ser perigoso resultando em resultados de aritmética imprecisos entre outros problemas No entanto compreender todas as razões subjacentes por trás desse tópico crucial em ciência da computação pode ser desafiador para muitos No post de hoje iremos aprofundar nos problemas que os números de ponto flutuante abordam e explorar as armadilhas envolvidas Então pegue uma garrafa de água refrescante e embarque nesta jornada rumo àessência dos números de ponto flutuante First things firstComputadores sóentendem linguagem de máquina Linguagem de máquina éuma coleção de bits que contém dados e instruções para a CPU Representamos esses bits como bits binários e como tal échamado de sistema numérico binário e Programar diretamente em linguagem de máquina éaltamente propenso a erros e muitas vezes ineficiente em diversos cenários Para lidar com isso as linguagens assembly foram introduzidas ao longo dos anos servindo como uma ponte entre as especificidades da arquitetura da CPU e um conjunto de instruções de alto nível Uma linguagem assembly ou simplesmente Assembly étraduzida em código de máquina por meio de um programa dedicado chamado Assembler Cada arquitetura de CPU geralmente tem seu próprio assembler associado a ela Isso permite que programadores trabalhem com um conjunto de instruções mais gerenciável e legível para humanos que éentão traduzido em código de máquina específico para a arquitetura do processador section data number dd Define o primeiro número como um float de bits number dd Define o segundo número como um float de bitssection text global start start Carrega o primeiro número no registro xmm movss xmm dword number Carrega o segundo número no registro xmm movss xmm dword number Os avanços no campo da engenharia de computação abriram caminho para o desenvolvimento de linguagens de programação cada vez mais de alto nível que podem ser traduzidas diretamente em instruções de código de máquina Ao longo das décadas seguintes surgiram linguagens como C Java e Python entre outras permitindo que cada vez mais pessoas pudessem escrever programas para computador sem necessariamente saber os detalhes de sua arquitetura de CPU Essa conquista significativa teve um impacto profundo na indústria àmedida que os computadores se tornaram mais compactos e rápidos capacitando práticas modernas de engenharia de software para oferecer um valor substancial aos negócios em todo o mundo Computadores entendem bits mas seres humanos se comunicam muito além de bits Bits não são suficientesComo mencionado anteriormente os computadores entendem apenas bits binários Nada mais neste mundo pode ser interpretado por computadores Bits Nada mais Na verdade CPUs de computadores eletrônicos entendem apenas a ausência ou presença de tensão permitindo nos representar informações usando e desligado e ligado No entanto a vida real traz desafios em que programas de computador criados por pessoas para pessoas precisam representar um conjunto mais amplo de caracteres além de apenas s e s Isso inclui letras números decimais números hexadecimais caracteres especiais sinais de pontuação e atémesmo emojis como este Conjuntos de caracteres padrão como os esquemas ASCII e Unicode resolvem o desafio de representar números letras caracteres especiais emojis e muito mais dentro do sistema binário ️Explorar as complexidades da codificação de caracteres com ASCII e Unicode estáalém do escopo deste artigo Isto seráabordado em futuros postsAqui nosso foco seráespecificamente como os computadores trabalham com números na memória particularmente números inteiros Bits e inteirosVamos utilizar o número como exemplo Ele érepresentado no sistema de numeração decimal base tornando o um número real Além disso ele éclassificado como um número inteiro Ao realizar conversões com base em potências de podemos representar o inteiro como em formato binário de bits Essa representação binária pode ser convertida de volta e para o valor decimal De uma perspectiva matemática como éum número inteiro ele cabe em um único byte bits Além disso realizando potências de sabemos que um único byte pode acomodar números Falando de forma simplificada alguém pode assumir que um único byte pode representar inteiros de a No entanto inteiros devem representar números negativos e positivos Com isso como devemos distribuir igualmente esses inteiros em um único byte Empregando uma técnica chamada complemento de dois Complemento de doisPara distribuir igualmente números inteiros negativos e positivos não fracionários dentro de bits podemos usar uma técnica chamada complemento de dois Nesta técnica o bit mais àesquerda serve como o bit de sinal indicando se o número épositivo ou negativotodos os bits são invertidos ou complementadosem seguida adicionamos ao valor resultanteDesta forma um único byte representa inteiros que variam de a Utilizando dois bytes para representar inteirosAo empregar a técnica do complemento de dois também podemos representar um intervalo de inteiros usando dois bytes bits Utilizando o conceito de potências de podemos observar que dois bytes podem acomodar um total de valores diferentes Considerando números negativos o intervalo se estende de a inclusive Agora vamos explorar alguns exemplos utilizando o PostgreSQL Se você como eu éda turma dos containers ter um PostgreSQL server prontinho pra ser utilizado émamão com açúcar docker run rm d name postgres e POSTGRES HOST AUTH METHOD trust postgres Em seguida acesse o terminal psql com o seguinte comando docker exec it postgres psql U postgresO quêvocêestáesperando para ir logo aprender sobre containers No PostgreSQL o tipo de dado que representa um inteiro de dois bytes échamado int ou smallint SELECT int int Para verificar o tipo de dado podemos usar a função pg typeof SELECT pg typeof int pg typeof smallintComo smallint usa dois bytes ele sópode acomodar o intervalo que mencionamos anteriormente em termos de bits e inteiros SELECT int int SELECT int int No entanto se tentarmos exceder o intervalo SELECT int ERROR smallint out of rangeIncrível não Além do smallint Postgres oferece uma variedade de outros tipos de dados inteiros Tipo de DadoDescriçãoIntervalo de InteirossmallintInteiro de dois bytes a integerInteiro de quatro bytes a bigintInteiro de oito bytes a No entanto todos nós sabemos que o mundo não éapenas composto por inteiros Inteiros são um subconjunto de um conjunto mais amplo de números chamados números reais Bits e outros números reaisNúmeros reais podem incluir inteiros frações e decimais tanto racionais quanto irracionais Por exemplo representa o número real π pi que éum número irracional Éum decimal não repetitivo e não terminante O valor de πse estende infinitamente sem qualquer padrão em sua representação decimal Suponha que tenhamos dois bytes bits que podem representar inteiros variando de a Quando se trata de representar outros números reais como decimais podemos usar uma técnica chamada ponto fixo que apesar de não ser eficiente pode ser utilizada para fins didáticos neste post Representação de ponto fixoNa representação de ponto fixo dividimos os bits fornecidos em três partes Bit de sinalO primeiro bit mais àesquerda representa o sinal sendo para negativo e para positivo Parte decimalOs próximos bits representam a parte decimal fracionária que pode ter uma precisão de até em nossa simulação Parte inteiraOs bits restantes representam a parte inteira que podem ir de a usando complemento de dois complemento de dois Considerando que a parte inteira usando bits com complemento de dois varia de a podemos concluir que com a representação de ponto fixo os decimais podem variar de a No entanto essa técnica pode nem sempre ser a mais eficiente Portanto vamos explorar outra técnica para representar decimais Sim estamos falando da mundialmente e amplamente utilizada representação de ponto flutuante Representação de ponto flutuanteTomando como exemplo bits na representação de ponto flutuante também dividimos os bits em três grupos Bit de sinalO primeiro bit mais àesquerda éusado para representar se o número énegativo ou positivo Parte do expoenteA parte do expoente éatribuída aos próximos X bits Em nossa simulação vamos alocar bits para esta parte enquanto utilizamos o primeiro bit do expoente como sendo o sinal do expoente Assim a faixa para o expoente se estende de a acomodando valores negativos e positivos Esta parte écrucial para definir a precisão aritmética na representação de ponto flutuante MantissaA parte da mantissa também conhecida como significante usa os bits restantes na nossa simulação permitindo uma faixa de até Como não estamos representando a parte inteira nesta simulação não énecessário aplicar complemento de dois àmantissa Agora a parte importantePara calcular o maior número de ponto flutuante positivo multiplicamos a mantissa pelo expoente Éaqui que entra o tal do ponto flutuante mantissa X expoenteNeste caso o valor máximo positivo seria obtido multiplicando se por resultando em um número extremamente grande como Por outro lado o número mínimo maior que zero pode ser representado como multiplicado por ou Observe que esta simulação éuma representação simplificada com precisão limitada e pode não refletir a precisão de formatos de ponto flutuante ideais ou padronizados Problemas e padrõesDe fato como mencionado anteriormente selecionar um número adequado de bits para a parte do expoente na representação de ponto flutuante écrucial para mitigar problemas de arredondamento e truncamento ao lidar com números fracionários Padrões como o IEEE foram estabelecidos exatamente para abordar essas preocupações e fornecer um framework consistente para a representação de ponto flutuante O padrão IEEE define o número de bits alocados para o expoente mantissa e sinal em formatos de precisão simples bits e dupla precisão bits Esses padrões determinam a representação precisa dos vários componentes de um número de ponto flutuante as regras para operações aritméticas e como lidar com casos excepcionais Precisão simples bytes Os números de precisão simples são representados usando bits de memória Eles incluem bit para o sinal do número bits para o expoente bits para a mantissaDe acordo com os padrões do IEEE a precisão simples normalmente manipula de a casas decimais de precisão Dupla precisão bytes Os números de dupla precisão são representados usando bits de memória Eles incluem bit para o sinal do número bits para o expoente bits para a mantissaDe acordo com os padrões do IEEE a dupla precisão pode manipular de a casas decimais de precisão Geralmente a dupla precisão se encaixa melhor quando a alta precisão énecessária mas esta por sua vez consome mais memória Tipos de dados de ponto flutuanteMuitas linguagens de programação e sistemas de banco de dados aderem aos padrões do IEEE e com o PostgreSQL isto não éexceção Vamos ver como o Postgres implementa os tipos de dados de ponto flutuante na prática O tipo de dado float segue o padrão de precisão simples do IEEE que aloca bit para o sinal bits para o expoente e bits para a mantissa SELECT float float Por outro lado o tipo de dado float segue o padrão de dupla precisão do IEEE que aloca bit para o sinal bits para o expoente e bits para a mantissa SELECT float float SELECT float float O tipo float padrão éequivalente àdupla precisão float ️Problemas de ponto flutuante na práticaVamos mergulhar em cálculos com números de ponto flutuante e ver os possíveis problemas na prática Considere uma simples soma de SELECT float float Este resultado mostra como problemas de precisão podem surgir em números de ponto flutuante de dupla precisão durante operações aritméticas Mesmo seguindo padrões não estamos imunes a esses desafios de cálculo com ponto flutuante No entanto háuma estratégia alternativa que envolve um truque maroto utilizando inteiros Um truque com inteirosEm vez do tipo de dado float podemos trabalhar com inteiros Incorporamos um fator multiplicador com base em uma escala decimal ao armazenar valores e em seguida dividimos pelo mesmo fator para restaurar a representação decimal original ao recuperar o valor Esse método permite cálculos decimais precisos usando inteiros e escala O fator multiplicador deve ser escolhido com base na precisão decimal necessária Para demonstrar vamos usar esse truque para realizar com o fator multiplicador SELECT int int Aqui cada entrada émultiplicada por e convertida para um inteiro Para recuperar o valor original sem perder a precisão dividimos por SELECT float Uau que técnica incrível No entanto o uso de um fator multiplicador fixo pode ser ineficiente ao lidar com entradas que possuem diferentes casas decimais Em vez disso uma representação de escala variável pode ser usada convertendo a entrada em uma string e analisando o número de dígitos decimais fazendo assim com que o fator multiplicador seja dinâmico para cada número real Mas tenha cuidado representações decimais de escala variável exigem manipulação cuidadosa de cálculos complexos escala decimal precisa e várias outras sutilezas da aritmética decimal que não étão trivial Éaqui que entram os decimais Decimais ao resgateDecimais lidam com os desafios associados a cálculos aritméticos complexos envolvendo decimais Ao passo em que eles reduzem significativamente os problemas de precisão comumente encontrados em números de ponto flutuante Diversas linguagens de programação e sistemas de banco de dados implementam decimais PostgreSQL oferece o tipo de dado decimal que oferece uma precisão superior em comparação com floats SELECT decimal decimal Os decimais também podem ser configurados para precisão e escala arbitrárias Exemplo aceita números de até SELECT decimal SELECT decimal Convenientemente o tipo de dado padrão para decimais no PostgreSQL énumeric que éidêntico a decimal SELECT pg typeof numeric ️Cuidado com o arredondamentoArredondar números decimais programaticamente pode levar a resultados imprecisos Por exemplo a soma teoricamente deveria resultar em zero SELECT Vamos ilustrar como podemos arredondar apenas a soma final para duas casas decimais SELECT ROUND So far so good Tudo funcionando como esperado Com tipos de dados adequados como decimais o problema aritmético inerente aos números de ponto flutuante jáéresolvido Todavia o arredondamento introduz seu próprio conjunto de desafios Mesmo que os decimais sejam excelentes para a precisão e aritmética de dados decimais as operações de arredondamento envolvem algum grau de aproximação Para simular um problema com arredondamentos desnecessários vamos arredondar cada número decimal antes de somá los SELECT ROUND ROUND ROUND OMG e agora Cada vez que arredondamos um número estamos adicionando um pouco de imprecisão Bit a bit o resultado final pode ficar longe do esperado pois a memória do computador éfinita e não épossível representar todas as casas decimais possíveis resultantes de uma aritmética arbitrária de números reais Lembra do resultado da mantissa X expoente Pois então Esses exemplos destacam por que o arredondamento desnecessário deve ser evitado Como o arredondamento éuma aproximação émelhor adiá lo atéa etapa final ou seja apenas quando formos apresentar os dados ao usuário final Decimais em outras tecnologiasCada linguagem de programação ou ferramenta possui seu próprio tipo de dados para lidar com precisão arbitrária como os decimais do PostgreSQL Ruby oferece a classe BigDecimal que facilita a aritmética decimal de ponto flutuante de precisão arbitrária Da mesma forma Java também inclui uma classe BigDecimal para este mesmo propósito Golang também não éexceção Ela possui aritmética decimal de precisão arbitrária que resolve os mesmos problemas Écrucial verificar se a tecnologia que vocêestáusando oferece suporte a precisão arbitrária como decimais Se vocêprecisar de uma precisão maior estas soluções costumam ser mais adequadas do que o uso de números de ponto flutuante brutos Ao limite se precisão for algo crítico para teu negócio e a tecnologia utilizada não fornece tipos como os big decimals de precisão arbitrária prefira então utilizar números inteiros com fator multiplicador etc que contemple as casas decimais suficientes para a precisão necessária ConclusãoNeste post exploramos as complexidades dos números de ponto flutuante Investigamos também como os computadores compreendem informações por meio do sistema binário desde a representação de inteiros e a ineficiência da representação de ponto fixo para decimais atéchegar aos números de ponto flutuante e suas limitações Além disso discutimos como os tipos de dados de precisão arbitrária como os decimais abordam esses problemas de precisão inerentes aos pontos flutuantes Por fim discutimos e compartilhamos as melhores práticas para lidar com problemas de arredondamento de números decimais Espero que esses tópicos tenham sido apresentados de forma didática tornando os problemas de ponto flutuante não mais um problema Cheers Referências |
2023-06-06 04:05:36 |
海外科学 |
NYT > Science |
Alli Smith, of the Cornell Ornithology Laboratory, offers beginner tips for exploring the wide world of birds. |
https://www.nytimes.com/2023/06/02/science/birds-birdwatching-outdoors.html
|
Alli Smith of the Cornell Ornithology Laboratory offers beginner tips for exploring the wide world of birds Alli Smith of the Cornell Lab of Ornithology offers beginner tips for exploring the wide world of birds |
2023-06-06 04:06:11 |
金融 |
ニッセイ基礎研究所 |
共同富裕実現、の目安-20年続いた「格差が過度に大きい状態」を解消できるか。 |
https://www.nli-research.co.jp/topics_detail1/id=75034?site=nli
|
それは、「中国が共同富裕を実現するためには、ジニ係数を年末時点でのから、年までに近く、年までにまで改善させる必要がある」とした発言である。 |
2023-06-06 13:06:19 |
ニュース |
BBC News - Home |
Kathleen Folbigg: Mum pardoned for baby deaths claims win for science |
https://www.bbc.co.uk/news/world-australia-65817593?at_medium=RSS&at_campaign=KARANGA
|
children |
2023-06-06 04:02:29 |
ニュース |
BBC News - Home |
Newspaper headlines: 'Absent Harry' and 'PM to overrule on boats Bill' |
https://www.bbc.co.uk/news/blogs-the-papers-65817256?at_medium=RSS&at_campaign=KARANGA
|
battle |
2023-06-06 04:34:53 |
IT |
週刊アスキー |
Apple Vision Proは複合現実ヘッドセットのロールスロイスだ(ジャイアン鈴木) |
https://weekly.ascii.jp/elem/000/004/139/4139751/
|
applevisionpro |
2023-06-06 13:15:00 |
IT |
週刊アスキー |
地上70階で真夏の美食を堪能! 横浜ロイヤルパークホテル「スカイブッフェー世界のリゾート料理ー」 |
https://weekly.ascii.jp/elem/000/004/139/4139740/
|
横浜ロイヤルパークホテル |
2023-06-06 13:30:00 |
IT |
週刊アスキー |
ニューヨーク旅行気分が楽しめる贅沢なドーナツを期間限定で発売 クリスピー・クリーム・ドーナツ「クリスピー・クリーム・プレミアム 東京 リッチ ニューヨーク ビッグアップル」 |
https://weekly.ascii.jp/elem/000/004/139/4139743/
|
期間限定 |
2023-06-06 13:15:00 |
IT |
週刊アスキー |
6月13日7時から「カプコンショーケース」が配信決定!創業40周年で新作タイトルを発表か |
https://weekly.ascii.jp/elem/000/004/139/4139750/
|
日本時間 |
2023-06-06 13:10:00 |
マーケティング |
AdverTimes |
亀倉雄策賞受賞記念 岡崎智弘個展始まる、「つくる人」との出会いから生まれた作品たち |
https://www.advertimes.com/20230606/article422189/
|
study |
2023-06-06 04:05:50 |
コメント
コメントを投稿